zoukankan      html  css  js  c++  java
  • javascript实现base64 md5 sha1 密码加密

    1、base64加密

      在页面中引入base64.js文件,调用方法为:

    <!DOCTYPE HTML>
    <html>
    <head>
    <meta charset="utf-8">
    <title>base64加密</title>
    <script type="text/javascript" src="base64.js"></script>
    <script type="text/javascript">
        var b = new Base64();
        var str = b.encode("admin:admin");
        alert("base64 encode:" + str);
         //解密
        str = b.decode(str);
        alert("base64 decode:" + str);
    </script>
    </head>
    <body>
    </body>
    </html>
    

      

    2、md5加密

      在页面中引用md5.js文件,调用方法为

    <!DOCTYPE HTML>
    <html>
    <head>
    <meta charset="utf-8">
    <title>md5加密</title>
    <script type="text/ecmascript" src="md5.js"></script>
    <script type="text/javascript">
     var hash = hex_md5("123dafd");
      alert(hash)
    </script>
    </head>
    <body>
    </body>
    </html>
    

      

    3、sha1加密

      据说这是最安全的加密

      页面中引入sha1.js,调用方法为

    <!DOCTYPE HTML>
    <html>
    <head>
    <meta charset="utf-8">
    <title>sha1加密</title>
    <script type="text/ecmascript" src="sha1.js"></script>
    <script type="text/javascript">
     var sha = hex_sha1('mima123465')
      alert(sha) 
    </script>
    </head>
    <body>
    </body>
    </html>
    

      

    非常流行的javascript的md5加密

    在网上看到的javascript的MD5加密,看比较好,就摘录了,供参考

    <input id=test value=webasp>
     <input type=button value=md onclick="alert(hex_md(test.value))">
     <script>
     var hexcase = ; /* hex output format. - lowercase; - uppercase    */
     var bpad = ""; /* base- pad character. "=" for strict RFC compliance  */
     var chrsz  = ; /* bits per input character. - ASCII; - Unicode   */
     /*
     * These are the functions you'll usually want to call
     * They take string arguments and return either hex or base- encoded strings
     */
     function hex_md(s){ return binlhex(core_md(strbinl(s), s.length * chrsz));}
     function b_md(s){ return binlb(core_md(strbinl(s), s.length * chrsz));}
     function hex_hmac_md(key, data) { return binlhex(core_hmac_md(key, data)); }
     function b_hmac_md(key, data) { return binlb(core_hmac_md(key, data)); }
     /* Backwards compatibility - same as hex_md() */
     function calcMD(s){ return binlhex(core_md(strbinl(s), s.length * chrsz));}
     /*
     * Perform a simple self-test to see if the VM is working
     */
     function md_vm_test()
     {
      return hex_md("abc") == "cdfbdfdef";
     }
     /*
     * Calculate the MD of an array of little-endian words, and a bit length
     */
     function core_md(x, len)
     {
      /* append padding */
      x[len >> ] |= x << ((len) % );
      x[(((len + ) >>> ) << ) + ] = len;
      var a = ;
      var b = -;
      var c = -;
      var d = ;
      for(var i = ; i < x.length; i += )
     {
      var olda = a;
      var oldb = b;
      var oldc = c;
      var oldd = d;
      a = md_ff(a, b, c, d, x[i+ ], , -);
      d = md_ff(d, a, b, c, x[i+ ], , -);
      c = md_ff(c, d, a, b, x[i+ ], , );
      b = md_ff(b, c, d, a, x[i+ ], , -);
      a = md_ff(a, b, c, d, x[i+ ], , -);
      d = md_ff(d, a, b, c, x[i+ ], , );
      c = md_ff(c, d, a, b, x[i+ ], , -);
      b = md_ff(b, c, d, a, x[i+ ], , -);
      a = md_ff(a, b, c, d, x[i+ ], , );
      d = md_ff(d, a, b, c, x[i+ ], , -);
      c = md_ff(c, d, a, b, x[i+], , -);
      b = md_ff(b, c, d, a, x[i+], , -);
      a = md_ff(a, b, c, d, x[i+], , );
      d = md_ff(d, a, b, c, x[i+], , -);
      c = md_ff(c, d, a, b, x[i+], , -);
      b = md_ff(b, c, d, a, x[i+], , );
      a = md_gg(a, b, c, d, x[i+ ], , -);
      d = md_gg(d, a, b, c, x[i+ ], , -);
      c = md_gg(c, d, a, b, x[i+], , );
      b = md_gg(b, c, d, a, x[i+ ], , -);
      a = md_gg(a, b, c, d, x[i+ ], , -);
      d = md_gg(d, a, b, c, x[i+], , );
      c = md_gg(c, d, a, b, x[i+], , -);
      b = md_gg(b, c, d, a, x[i+ ], , -);
      a = md_gg(a, b, c, d, x[i+ ], , );
      d = md_gg(d, a, b, c, x[i+], , -);
      c = md_gg(c, d, a, b, x[i+ ], , -);
      b = md_gg(b, c, d, a, x[i+ ], , );
      a = md_gg(a, b, c, d, x[i+], , -);
      d = md_gg(d, a, b, c, x[i+ ], , -);
      c = md_gg(c, d, a, b, x[i+ ], , );
      b = md_gg(b, c, d, a, x[i+], , -);
      a = md_hh(a, b, c, d, x[i+ ], , -);
      d = md_hh(d, a, b, c, x[i+ ], , -);
      c = md_hh(c, d, a, b, x[i+], , );
      b = md_hh(b, c, d, a, x[i+], , -);
      a = md_hh(a, b, c, d, x[i+ ], , -);
      d = md_hh(d, a, b, c, x[i+ ], , );
      c = md_hh(c, d, a, b, x[i+ ], , -);
      b = md_hh(b, c, d, a, x[i+], , -);
      a = md_hh(a, b, c, d, x[i+], , );
      d = md_hh(d, a, b, c, x[i+ ], , -);
      c = md_hh(c, d, a, b, x[i+ ], , -);
      b = md_hh(b, c, d, a, x[i+ ], , );
      a = md_hh(a, b, c, d, x[i+ ], , -);
      d = md_hh(d, a, b, c, x[i+], , -);
      c = md_hh(c, d, a, b, x[i+], , );
      b = md_hh(b, c, d, a, x[i+ ], , -);
      a = md_ii(a, b, c, d, x[i+ ], , -);
      d = md_ii(d, a, b, c, x[i+ ], , );
      c = md_ii(c, d, a, b, x[i+], , -);
      b = md_ii(b, c, d, a, x[i+ ], , -);
      a = md_ii(a, b, c, d, x[i+], , );
      d = md_ii(d, a, b, c, x[i+ ], , -);
      c = md_ii(c, d, a, b, x[i+], , -);
      b = md_ii(b, c, d, a, x[i+ ], , -);
      a = md_ii(a, b, c, d, x[i+ ], , );
      d = md_ii(d, a, b, c, x[i+], , -);
      c = md_ii(c, d, a, b, x[i+ ], , -);
      b = md_ii(b, c, d, a, x[i+], , );
      a = md_ii(a, b, c, d, x[i+ ], , -);
      d = md_ii(d, a, b, c, x[i+], , -);
      c = md_ii(c, d, a, b, x[i+ ], , );
      b = md_ii(b, c, d, a, x[i+ ], , -);
      a = safe_add(a, olda);
      b = safe_add(b, oldb);
      c = safe_add(c, oldc);
      d = safe_add(d, oldd);
     }
     return Array(a, b, c, d);
    }
    /*
     * These functions implement the four basic operations the algorithm uses.
     */
    function md_cmn(q, a, b, x, s, t)
    {
     return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
    }
    function md_ff(a, b, c, d, x, s, t)
    {
     return md_cmn((b & c) | ((~b) & d), a, b, x, s, t);
    }
    function md_gg(a, b, c, d, x, s, t)
    {
     return md_cmn((b & d) | (c & (~d)), a, b, x, s, t);
    }
    function md_hh(a, b, c, d, x, s, t)
    {
     return md_cmn(b ^ c ^ d, a, b, x, s, t);
    }
    function md_ii(a, b, c, d, x, s, t)
    {
     return md_cmn(c ^ (b | (~d)), a, b, x, s, t);
    }
    /*
     * Calculate the HMAC-MD, of a key and some data
     */
    function core_hmac_md(key, data)
    {
     var bkey = strbinl(key);
     if(bkey.length > ) bkey = core_md(bkey, key.length * chrsz);
     var ipad = Array(), opad = Array();
     for(var i = ; i < ; i++)
     {
      ipad[i] = bkey[i] ^ x;
      opad[i] = bkey[i] ^ xCCCC;
     }
     var hash = core_md(ipad.concat(strbinl(data)), + data.length * chrsz);
     return core_md(opad.concat(hash), + );
    }
    /*
     * Add integers, wrapping at ^. This uses -bit operations internally
     * to work around bugs in some JS interpreters.
     */
    function safe_add(x, y)
    {
     var lsw = (x & xFFFF) + (y & xFFFF);
     var msw = (x >> ) + (y >> ) + (lsw >> );
     return (msw << ) | (lsw & xFFFF);
    }
    /*
     * Bitwise rotate a -bit number to the left.
     */
    function bit_rol(num, cnt)
    {
     return (num << cnt) | (num >>> ( - cnt));
    }
    /*
     * Convert a string to an array of little-endian words
     * If chrsz is ASCII, characters > have their hi-byte silently ignored.
     */
    function strbinl(str)
    {
     var bin = Array();
     var mask = ( << chrsz) - ;
     for(var i = ; i < str.length * chrsz; i += chrsz)
      bin[i>>] |= (str.charCodeAt(i / chrsz) & mask) << (i%);
     return bin;
    }
    /*
     * Convert an array of little-endian words to a hex string.
     */
    function binlhex(binarray)
    {
     var hex_tab = hexcase ? "ABCDEF" : "abcdef";
     var str = "";
     for(var i = ; i < binarray.length * ; i++)
     {
      str += hex_tab.charAt((binarray[i>>] >> ((i%)*+)) & xF) +
          hex_tab.charAt((binarray[i>>] >> ((i%)* )) & xF);
     }
     return str;
    }
    /*
     * Convert an array of little-endian words to a base- string
     */
    function binlb(binarray)
    {
     var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/";
     var str = "";
     for(var i = ; i < binarray.length * ; i += )
     {
      var triplet = (((binarray[i  >> ] >> * ( i  %)) & xFF) << )
            | (((binarray[i+ >> ] >> * ((i+)%)) & xFF) << )
            | ((binarray[i+ >> ] >> * ((i+)%)) & xFF);
      for(var j = ; j < ; j++)
      {
       if(i * + j * > binarray.length * ) str += bpad;
       else str += tab.charAt((triplet >> *(-j)) & xF);
      }
     }
     return str;
    }
    </script>
  • 相关阅读:
    HDUOJ---2152
    HDUOJ ---悼念512汶川大地震遇难同胞——来生一起走
    HDUOJ --2566
    HDUOJ ----1709
    HDUOJ---1171
    HDUOJ ------1398
    catalan---卡特兰数(小结)
    向前字典排序
    HDUOJ--Holding Bin-Laden Captive!
    HDUOJ----Ignatius and the Princess III
  • 原文地址:https://www.cnblogs.com/good10001/p/4800764.html
Copyright © 2011-2022 走看看