Javascript脚本实现静态网页加密实例代码


Posted in Javascript onNovember 05, 2013

Javascript脚本实现静态网页加密,阅读Javascript脚本实现静态网页加密,前两天看见有人问静态网页加密问题,就写了这个代码思路:加密时:先把用户的密钥A用md5加密为B,然后用B异或源文件S0得到目标文件S1,把S1存入js变量中。解密时:询问密钥,然后操作同加密

前两天看见有人问静态网页加密问题,就写了这个代码

思路:

加密时:先把用户的密钥A用md5加密为B,然后用B异或源文件S0得到目标文件S1,把S1存入js变量中。

解密时:询问密钥,然后操作同加密。

因为用了md5,个人认为没有密钥的时候是无法破解的(暴力除外)

大家试用一下哈哈:

源代码如下:

<html>
<head>
<title>Web Encoder</title>
<style>
body {
 font-size:12px;
 line-height:12px;
 background-Color:buttonface;
 border-width:0px;
 overflow:auto;
 margin:0px;
 padding:4px;
}
#t1, #t2 {
 width:100%;
 height:40%;
 border-width:1px;
 overflow:auto;
 height:expression((document.body.clientHeight-100)/2);
}
input {
 border-width:1px;
 padding-left:10px;
 padding-right:10px;
 margin:4px;
}
</style>
<script>
function webEncode(){
 strSource=escape(XOR(t1.value,STR.md5(p1.value)));
 //strSource=t1.value;
 strOut="<script>\r\nstrHTML=\"\";\r\n";
 for(var i=0;i+70<strSource.length;i+=70){
  strOut+="strHTML+=\""+addSlash(strSource.substring(i,i+70))+"\";\r\n";
 }
 strOut+="strHTML+=\""+addSlash(strSource.substring(i,strSource.length))+"\";\r\n";
 strOut+=XOR+"\r\n";
 //below code load the STR object
 strOut+="var STR =\r\n{\r\n\thexcase : 0,  \/* hex output format. 0 - lowercase; 1 - ";
 strOut+="uppercase        *\/\r\n\tb64pad  : \"\", \/* base-64 pad character. \"=\" for ";
 strOut+="strict RFC compliance   *\/\r\n\tchrsz   : 8,  \/* bits per input character";
 strOut+=". 8 - ASCII; 16 - Unicode      *\/\r\n\t\r\n\tb64_hmac_md5:\r\n\t\tfunction(key, ";
 strOut+="data) { return binl2b64(core_hmac_md5(key, data)); },\r\n\t\t\r\n\tb64_md5:\r\n";
 strOut+="\t\tfunction(s){ return binl2b64(core_md5(str2binl(s), s.length * this.c";
 strOut+="hrsz));},\r\n\t\t\r\n\tbinl2b64:\r\n\t\tfunction(binarray){\r\n\t\t  var tab = \"ABCDE";
 strOut+="FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+\/\";\r\n\t\t  var";
 strOut+=" str = \"\";\r\n\t\t  for(var i = 0; i < binarray.length * 4; i += 3)\r\n\t\t  {";
 strOut+="\r\n\t\t    var triplet = (((binarray[i   >> 2] >> 8 * ( i   %4)) & 0xFF) ";
 strOut+="<< 16)\r\n\t\t                | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & ";
 strOut+="0xFF) << 8 )\r\n\t\t                |  ((binarray[i+2 >> 2] >> 8 * ((i+2)%";
 strOut+="4)) & 0xFF);\r\n\t\t    for(var j = 0; j < 4; j++)\r\n\t\t    {\r\n\t\t      if(i ";
 strOut+="* 8 + j * 6 > binarray.length * 32) str += this.b64pad;\r\n\t\t      else ";
 strOut+="str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);\r\n\t\t    }\r\n\t\t  }\r\n\t\t  r";
 strOut+="eturn str;\r\n\t\t},\r\n\t\t\r\n\tbinl2hex:\r\n\t\tfunction(binarray){\r\n\t\t  var hex_t";
 strOut+="ab = this.hexcase ? \"0123456789ABCDEF\" : \"0123456789abcdef\";\r\n\t\t  var ";
 strOut+="str = \"\";\r\n\t\t  for(var i = 0; i < binarray.length * 4; i++)\r\n\t\t  {\r\n\t\t";
 strOut+="    str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +\r\n\t\t";
 strOut+="           hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF);\r\n\t\t ";
 strOut+=" }\r\n\t\t  return str;\r\n\t\t},\r\n\t\r\n\tbinl2str:\r\n\t\tfunction(bin){\r\n\t\t  var st";
 strOut+="r = \"\";\r\n\t\t  var mask = (1 << this.chrsz) - 1;\r\n\t\t  for(var i = 0; i <";
 strOut+=" bin.length * 32; i += this.chrsz)\r\n\t\t    str += String.fromCharCode((";
 strOut+="bin[i>>5] >>> (i % 32)) & mask);\r\n\t\t  return str;\r\n\t\t},\r\n\t\t\r\n\tbit_rol:";
 strOut+="\r\n\t\tfunction(num, cnt){return (num << cnt) | (num >>> (32 - cnt));},\r\n";
 strOut+="\t\t\r\n\tcore_hmac_md5:\r\n\t\tfunction(key, data){\r\n\t\t  var bkey = str2binl(k";
 strOut+="ey);\r\n\t\t  if(bkey.length > 16) bkey = core_md5(bkey, key.length * this";
 strOut+=".chrsz);\r\n\t\t\r\n\t\t  var ipad = Array(16), opad = Array(16);\r\n\t\t  for(var";
 strOut+=" i = 0; i < 16; i++)\r\n\t\t  {\r\n\t\t    ipad[i] = bkey[i] ^ 0x36363636;\r\n\t\t";
 strOut+="    opad[i] = bkey[i] ^ 0x5C5C5C5C;\r\n\t\t  }\r\n\t\t\r\n\t\t  var hash = core_md";
 strOut+="5(ipad.concat(str2binl(data)), 512 + data.length * this.chrsz);\r\n\t\t  r";
 strOut+="eturn core_md5(opad.concat(hash), 512 + 128);\r\n\t\t},\r\n\t\t\r\n\tcore_md5:\r\n\t";
 strOut+="\tfunction(x, len){\r\n\t\t  \/* append padding *\/\r\n\t\t  x[len >> 5] |= 0x80 ";
 strOut+="<< ((len) % 32);\r\n\t\t  x[(((len + 64) >>> 9) << 4) + 14] = len;\r\n\t\t\r\n\t\t";
 strOut+="  var a =  1732584193;\r\n\t\t  var b = -271733879;\r\n\t\t  var c = -17325841";
 strOut+="94;\r\n\t\t  var d =  271733878;\r\n\t\t\r\n\t\t  for(var i = 0; i < x.length; i +";
 strOut+="= 16)\r\n\t\t  {\r\n\t\t    var olda = a;\r\n\t\t    var oldb = b;\r\n\t\t    var oldc";
 strOut+=" = c;\r\n\t\t    var oldd = d;\r\n\t\t\r\n\t\t    a = this.md5_ff(a, b, c, d, x[i+";
 strOut+=" 0], 7 , -680876936);\r\n\t\t    d = this.md5_ff(d, a, b, c, x[i+ 1], 12, ";
 strOut+="-389564586);\r\n\t\t    c = this.md5_ff(c, d, a, b, x[i+ 2], 17,  60610581";
 strOut+="9);\r\n\t\t    b = this.md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);\r\n\t\t ";
 strOut+="   a = this.md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);\r\n\t\t    d = th";
 strOut+="is.md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);\r\n\t\t    c = this.md5_f";
 strOut+="f(c, d, a, b, x[i+ 6], 17, -1473231341);\r\n\t\t    b = this.md5_ff(b, c, ";
 strOut+="d, a, x[i+ 7], 22, -45705983);\r\n\t\t    a = this.md5_ff(a, b, c, d, x[i+";
 strOut+=" 8], 7 ,  1770035416);\r\n\t\t    d = this.md5_ff(d, a, b, c, x[i+ 9], 12,";
 strOut+=" -1958414417);\r\n\t\t    c = this.md5_ff(c, d, a, b, x[i+10], 17, -42063)";
 strOut+=";\r\n\t\t    b = this.md5_ff(b, c, d, a, x[i+11], 22, -1990404162);\r\n\t\t   ";
 strOut+=" a = this.md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);\r\n\t\t    d = thi";
 strOut+="s.md5_ff(d, a, b, c, x[i+13], 12, -40341101);\r\n\t\t    c = this.md5_ff(c";
 strOut+=", d, a, b, x[i+14], 17, -1502002290);\r\n\t\t    b = this.md5_ff(b, c, d, ";
 strOut+="a, x[i+15], 22,  1236535329);\r\n\t\t\r\n\t\t    a = this.md5_gg(a, b, c, d, x";
 strOut+="[i+ 1], 5 , -165796510);\r\n\t\t    d = this.md5_gg(d, a, b, c, x[i+ 6], 9";
 strOut+=" , -1069501632);\r\n\t\t    c = this.md5_gg(c, d, a, b, x[i+11], 14,  6437";
 strOut+="17713);\r\n\t\t    b = this.md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);\r\n";
 strOut+="\t\t    a = this.md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);\r\n\t\t    d =";
 strOut+=" this.md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);\r\n\t\t    c = this.md5_";
 strOut+="gg(c, d, a, b, x[i+15], 14, -660478335);\r\n\t\t    b = this.md5_gg(b, c, ";
 strOut+="d, a, x[i+ 4], 20, -405537848);\r\n\t\t    a = this.md5_gg(a, b, c, d, x[i";
 strOut+="+ 9], 5 ,  568446438);\r\n\t\t    d = this.md5_gg(d, a, b, c, x[i+14], 9 ,";
 strOut+=" -1019803690);\r\n\t\t    c = this.md5_gg(c, d, a, b, x[i+ 3], 14, -187363";
 strOut+="961);\r\n\t\t    b = this.md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);\r\n\t";
 strOut+="\t    a = this.md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);\r\n\t\t    d =";
 strOut+=" this.md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);\r\n\t\t    c = this.md5_";
 strOut+="gg(c, d, a, b, x[i+ 7], 14,  1735328473);\r\n\t\t    b = this.md5_gg(b, c,";
 strOut+=" d, a, x[i+12], 20, -1926607734);\r\n\t\t\r\n\t\t    a = this.md5_hh(a, b, c, ";
 strOut+="d, x[i+ 5], 4 , -378558);\r\n\t\t    d = this.md5_hh(d, a, b, c, x[i+ 8], ";
 strOut+="11, -2022574463);\r\n\t\t    c = this.md5_hh(c, d, a, b, x[i+11], 16,  183";
 strOut+="9030562);\r\n\t\t    b = this.md5_hh(b, c, d, a, x[i+14], 23, -35309556);\r";
 strOut+="\n\t\t    a = this.md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);\r\n\t\t    d";
 strOut+=" = this.md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);\r\n\t\t    c = this.";
 strOut+="md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);\r\n\t\t    b = this.md5_hh(b,";
 strOut+=" c, d, a, x[i+10], 23, -1094730640);\r\n\t\t    a = this.md5_hh(a, b, c, d";
 strOut+=", x[i+13], 4 ,  681279174);\r\n\t\t    d = this.md5_hh(d, a, b, c, x[i+ 0]";
 strOut+=", 11, -358537222);\r\n\t\t    c = this.md5_hh(c, d, a, b, x[i+ 3], 16, -72";
 strOut+="2521979);\r\n\t\t    b = this.md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);\r";
 strOut+="\n\t\t    a = this.md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);\r\n\t\t    d ";
 strOut+="= this.md5_hh(d, a, b, c, x[i+12], 11, -421815835);\r\n\t\t    c = this.md";
 strOut+="5_hh(c, d, a, b, x[i+15], 16,  530742520);\r\n\t\t    b = this.md5_hh(b, c";
 strOut+=", d, a, x[i+ 2], 23, -995338651);\r\n\t\t\r\n\t\t    a = this.md5_ii(a, b, c, ";
 strOut+="d, x[i+ 0], 6 , -198630844);\r\n\t\t    d = this.md5_ii(d, a, b, c, x[i+ 7";
 strOut+="], 10,  1126891415);\r\n\t\t    c = this.md5_ii(c, d, a, b, x[i+14], 15, -";
 strOut+="1416354905);\r\n\t\t    b = this.md5_ii(b, c, d, a, x[i+ 5], 21, -57434055";
 strOut+=");\r\n\t\t    a = this.md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);\r\n\t\t  ";
 strOut+="  d = this.md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);\r\n\t\t    c = th";
 strOut+="is.md5_ii(c, d, a, b, x[i+10], 15, -1051523);\r\n\t\t    b = this.md5_ii(b";
 strOut+=", c, d, a, x[i+ 1], 21, -2054922799);\r\n\t\t    a = this.md5_ii(a, b, c, ";
 strOut+="d, x[i+ 8], 6 ,  1873313359);\r\n\t\t    d = this.md5_ii(d, a, b, c, x[i+1";
 strOut+="5], 10, -30611744);\r\n\t\t    c = this.md5_ii(c, d, a, b, x[i+ 6], 15, -1";
 strOut+="560198380);\r\n\t\t    b = this.md5_ii(b, c, d, a, x[i+13], 21,  130915164";
 strOut+="9);\r\n\t\t    a = this.md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);\r\n\t\t  ";
 strOut+="  d = this.md5_ii(d, a, b, c, x[i+11], 10, -1120210379);\r\n\t\t    c = th";
 strOut+="is.md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);\r\n\t\t    b = this.md5_ii";
 strOut+="(b, c, d, a, x[i+ 9], 21, -343485551);\r\n\t\t\r\n\t\t    a = this.safe_add(a,";
 strOut+=" olda);\r\n\t\t    b = this.safe_add(b, oldb);\r\n\t\t    c = this.safe_add(c,";
 strOut+=" oldc);\r\n\t\t    d = this.safe_add(d, oldd);\r\n\t\t  }\r\n\t\t  return Array(a,";
 strOut+=" b, c, d);\r\n\t\t},\r\n\t\t\r\n\thex_hmac_md5:function(key, data){ return this.b";
 strOut+="inl2hex(this.core_hmac_md5(key, data)); },\r\n\t\r\n\thex_md5:function(s){re";
 strOut+="turn this.binl2hex(this.core_md5(this.str2binl(s), s.length * this.chr";
 strOut+="sz));},\r\n\t\r\n\tmd5:function(s){return(this.hex_md5(s));},\r\n\r\n\tmd5_cmn:fu";
 strOut+="nction(q, a, b, x, s, t){return this.safe_add(this.bit_rol(this.safe_a";
 strOut+="dd(this.safe_add(a, q), this.safe_add(x, t)), s),b);},\r\n\r\n\tmd5_ff:func";
 strOut+="tion(a, b, c, d, x, s, t){return this.md5_cmn((b & c) | ((~b) & d), a,";
 strOut+=" b, x, s, t);},\r\n\r\n\tmd5_gg:function(a, b, c, d, x, s, t){return this.m";
 strOut+="d5_cmn((b & d) | (c & (~d)), a, b, x, s, t);},\r\n\r\n\tmd5_hh:function(a, ";
 strOut+="b, c, d, x, s, t){return this.md5_cmn(b ^ c ^ d, a, b, x, s, t);},\r\n\r\n";
 strOut+="\tmd5_ii:function(a, b, c, d, x, s, t){return this.md5_cmn(c ^ (b | (~d";
 strOut+=")), a, b, x, s, t);},\r\n\r\n\tmd5_vm_test:function(){return hex_md5(\"abc\")";
 strOut+=" == \"900150983cd24fb0d6963f7d28e17f72\";},\r\n\t\r\n\tsafe_add:\r\n\t\tfunction(x";
 strOut+=", y){\r\n\t\t  var lsw = (x & 0xFFFF) + (y & 0xFFFF);\r\n\t\t  var msw = (x >>";
 strOut+=" 16) + (y >> 16) + (lsw >> 16);\r\n\t\t  return (msw << 16) | (lsw & 0xFFF";
 strOut+="F);\r\n\t\t},\r\n\t\t\r\n\tstr2binl:\r\n\t\tfunction(str){\r\n\t\t  var bin = Array();\r\n\t";
 strOut+="\t  var mask = (1 << this.chrsz) - 1;\r\n\t\t  for(var i = 0; i < str.lengt";
 strOut+="h * this.chrsz; i += this.chrsz)\r\n\t\t    bin[i>>5] |= (str.charCodeAt(i";
 strOut+=" \/ this.chrsz) & mask) << (i%32);\r\n\t\t  return bin;\r\n\t\t},\r\n\r\n\tstr_hmac_";
 strOut+="md5:function(key, data){ return binl2str(core_hmac_md5(key, data)); },";
 strOut+="\r\n\r\n\tstr_md5:function(s){ return binl2str(core_md5(str2binl(s), s.leng";
 strOut+="th * this.chrsz));}\r\n}\r\n";
 strOut+=performPage+"\r\n";
 strOut+="performPage();\r\n";
 strOut+="<\/script>";
 t2.value=strOut;
}
function runCode(){
 win=open("about:blank");
 win.document.write(t2.value);
 win.document.close();
}
function addSlash(str){
 return(str).replace(/\\/g,"\\\\").replace(/\//g,"\\\/").replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\"/g,"\\\"").replace(/\'/g,"\\\'").replace(/\t/g,"\\t");
}
function XOR(strV,strPass){
 var intPassLength=strPass.length;
 var re="";
 for(var i=0;i<strV.length;i++){
  re+=String.fromCharCode(strV.charCodeAt(i)^strPass.charCodeAt(i%intPassLength));
 }
 return(re);
}
function performPage(strPass){
 if(strPass){
  document.cookie="password="+escape(strPass);
  document.write(XOR(unescape(strHTML),STR.md5(strPass)));
  return(false);
 }
 //**********如果需要自动记住密码,请将下面的注释改成代码
 /*
 var pass=document.cookie.match(/password=([^;]+)/i);
 if(pass){
  pass=unescape(pass[1]);
  document.write(XOR(unescape(strHTML),STR.md5(pass)));
  return(false);
 }
 */
 //*************
 strAskPass="<table cellspacing=0 cellpadding=0 width=100% height=100% align=center valign=middle><tr><td> </td><td align=center>";
 strAskPass+="<b>Password:</b><input style=\"border-width:1px;\" type=password id=ps01 onkeydown=\"if(event.keyCode==13){performPage(this.value);}\">";
 strAskPass+="<input style=\"border-width:1px;\" type=button onclick=\"performPage(ps01.value);\" value=Enter></td><td> </td></tr></table>";
 document.write(strAskPass);
}
var STR =
{
 hexcase : 0,  /* hex output format. 0 - lowercase; 1 - uppercase        */
 b64pad  : "", /* base-64 pad character. "=" for strict RFC compliance   */
 chrsz   : 8,  /* bits per input character. 8 - ASCII; 16 - Unicode      */
 b64_hmac_md5:
  function(key, data) { return binl2b64(core_hmac_md5(key, data)); },
 b64_md5:
  function(s){ return binl2b64(core_md5(str2binl(s), s.length * this.chrsz));},
 binl2b64:
  function(binarray){
    var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    var str = "";
    for(var i = 0; i < binarray.length * 4; i += 3)
    {
      var triplet = (((binarray[i   >> 2] >> 8 * ( i   %4)) & 0xFF) << 16)
                  | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
                  |  ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
      for(var j = 0; j < 4; j++)
      {
        if(i * 8 + j * 6 > binarray.length * 32) str += this.b64pad;
        else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
      }
    }
    return str;
  },
 binl2hex:
  function(binarray){
    var hex_tab = this.hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
    var str = "";
    for(var i = 0; i < binarray.length * 4; i++)
    {
      str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
             hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF);
    }
    return str;
  },
 binl2str:
  function(bin){
    var str = "";
    var mask = (1 << this.chrsz) - 1;
    for(var i = 0; i < bin.length * 32; i += this.chrsz)
      str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
    return str;
  },
 bit_rol:
  function(num, cnt){return (num << cnt) | (num >>> (32 - cnt));},
 core_hmac_md5:
  function(key, data){
    var bkey = str2binl(key);
    if(bkey.length > 16) bkey = core_md5(bkey, key.length * this.chrsz);
    var ipad = Array(16), opad = Array(16);
    for(var i = 0; i < 16; i++)
    {
      ipad[i] = bkey[i] ^ 0x36363636;
      opad[i] = bkey[i] ^ 0x5C5C5C5C;
    }
    var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * this.chrsz);
    return core_md5(opad.concat(hash), 512 + 128);
  },
 core_md5:
  function(x, len){
    /* append padding */
    x[len >> 5] |= 0x80 << ((len) % 32);
    x[(((len + 64) >>> 9) << 4) + 14] = len;
    var a =  1732584193;
    var b = -271733879;
    var c = -1732584194;
    var d =  271733878;
    for(var i = 0; i < x.length; i += 16)
    {
      var olda = a;
      var oldb = b;
      var oldc = c;
      var oldd = d;
      a = this.md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
      d = this.md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
      c = this.md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);
      b = this.md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
      a = this.md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
      d = this.md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);
      c = this.md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
      b = this.md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
      a = this.md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
      d = this.md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
      c = this.md5_ff(c, d, a, b, x[i+10], 17, -42063);
      b = this.md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
      a = this.md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);
      d = this.md5_ff(d, a, b, c, x[i+13], 12, -40341101);
      c = this.md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
      b = this.md5_ff(b, c, d, a, x[i+15], 22,  1236535329);
      a = this.md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
      d = this.md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
      c = this.md5_gg(c, d, a, b, x[i+11], 14,  643717713);
      b = this.md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
      a = this.md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
      d = this.md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);
      c = this.md5_gg(c, d, a, b, x[i+15], 14, -660478335);
      b = this.md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
      a = this.md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
      d = this.md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
      c = this.md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
      b = this.md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);
      a = this.md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
      d = this.md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
      c = this.md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);
      b = this.md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
      a = this.md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
      d = this.md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
      c = this.md5_hh(c, d, a, b, x[i+11], 16,  1839030562);
      b = this.md5_hh(b, c, d, a, x[i+14], 23, -35309556);
      a = this.md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
      d = this.md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);
      c = this.md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
      b = this.md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
      a = this.md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);
      d = this.md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
      c = this.md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
      b = this.md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);
      a = this.md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
      d = this.md5_hh(d, a, b, c, x[i+12], 11, -421815835);
      c = this.md5_hh(c, d, a, b, x[i+15], 16,  530742520);
      b = this.md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
      a = this.md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
      d = this.md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);
      c = this.md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
      b = this.md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
      a = this.md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);
      d = this.md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
      c = this.md5_ii(c, d, a, b, x[i+10], 15, -1051523);
      b = this.md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
      a = this.md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
      d = this.md5_ii(d, a, b, c, x[i+15], 10, -30611744);
      c = this.md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
      b = this.md5_ii(b, c, d, a, x[i+13], 21,  1309151649);
      a = this.md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
      d = this.md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
      c = this.md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);
      b = this.md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
      a = this.safe_add(a, olda);
      b = this.safe_add(b, oldb);
      c = this.safe_add(c, oldc);
      d = this.safe_add(d, oldd);
    }
    return Array(a, b, c, d);
  },
 hex_hmac_md5:function(key, data){ return this.binl2hex(this.core_hmac_md5(key, data)); },
 hex_md5:function(s){return this.binl2hex(this.core_md5(this.str2binl(s), s.length * this.chrsz));},
 md5:function(s){return(this.hex_md5(s));},
 md5_cmn:function(q, a, b, x, s, t){return this.safe_add(this.bit_rol(this.safe_add(this.safe_add(a, q), this.safe_add(x, t)), s),b);},
 md5_ff:function(a, b, c, d, x, s, t){return this.md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);},
 md5_gg:function(a, b, c, d, x, s, t){return this.md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);},
 md5_hh:function(a, b, c, d, x, s, t){return this.md5_cmn(b ^ c ^ d, a, b, x, s, t);},
 md5_ii:function(a, b, c, d, x, s, t){return this.md5_cmn(c ^ (b | (~d)), a, b, x, s, t);},
 md5_vm_test:function(){return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";},
 safe_add:
  function(x, y){
    var lsw = (x & 0xFFFF) + (y & 0xFFFF);
    var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
    return (msw << 16) | (lsw & 0xFFFF);
  },
 str2binl:
  function(str){
    var bin = Array();
    var mask = (1 << this.chrsz) - 1;
    for(var i = 0; i < str.length * this.chrsz; i += this.chrsz)
      bin[i>>5] |= (str.charCodeAt(i / this.chrsz) & mask) << (i%32);
    return bin;
  },
 str_hmac_md5:function(key, data){ return binl2str(core_hmac_md5(key, data)); },
 str_md5:function(s){ return binl2str(core_md5(str2binl(s), s.length * this.chrsz));}
}
</script>
</head>
<body>
<b>Source:</b><br>
<textarea id=t1></textarea><br>
<b>Password:</b><input type=password value=default id=p1><input type=button onclick="webEncode();" value="Start Encode"><br>
<b>Encoded:</b><br>
<textarea id=t2></textarea><br>
<input type=button onclick="runCode();" value="Run Code">
</body>
</html>

将此源代码保存成HTML格式的文件,双击运行即可看到效果

Javascript 相关文章推荐
DWZ刷新dialog解决方法
Mar 03 Javascript
jQuery.fn和jQuery.prototype区别介绍
Oct 05 Javascript
jQuery中parents()和parent()的区别分析
Oct 28 Javascript
JavaScript比较两个对象是否相等的方法
Feb 06 Javascript
javascript数据结构之双链表插入排序实例详解
Nov 25 Javascript
在localStorage中存储对象数组并读取的方法
Sep 24 Javascript
vue2.0 下拉框默认标题设置方法
Aug 22 Javascript
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
Oct 25 Javascript
js最实用string(字符串)类型的使用及截取与拼接详解
Apr 26 Javascript
Vue 利用指令实现禁止反复发送请求的两种方法
Sep 15 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
Apr 22 Javascript
微信小程序视频弹幕发送功能的实现
Dec 28 Javascript
客户端js性能优化小技巧整理
Nov 05 #Javascript
js倒计时小程序
Nov 05 #Javascript
js实现幻灯片效果(基于jquery插件)
Nov 05 #Javascript
javascript使用location.search的示例
Nov 05 #Javascript
jquery按回车提交数据的代码示例
Nov 05 #Javascript
js jq 单击和双击区分示例介绍
Nov 05 #Javascript
原生JavaScript实现连连看游戏(附源码)
Nov 05 #Javascript
You might like
PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
2016/05/22 PHP
php数组指针函数功能及用法示例
2020/02/11 PHP
php判断数组是否为空的实例方法
2020/05/10 PHP
比较简单的异步加载JS文件的代码
2009/07/18 Javascript
简单实用的js调试logger组件实现代码
2010/11/20 Javascript
Array栈方法和队列方法的特点说明
2014/01/24 Javascript
常用jQuery选择器总结
2014/07/11 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
基于jquery实现省市联动效果
2015/11/23 Javascript
js操作cookie保存浏览记录的方法
2015/12/25 Javascript
轻松实现JavaScript图片切换
2016/01/12 Javascript
NodeJS创建基础应用并应用模板引擎
2016/04/12 NodeJs
angularJS深拷贝详解
2017/03/23 Javascript
微信小程序云开发实现云数据库读写权限
2019/05/17 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
2019/10/10 jQuery
使用vue构建多页面应用的示例
2020/10/22 Javascript
解决elementui表格操作列自适应列宽
2020/12/28 Javascript
10款最好的Web开发的 Python 框架
2015/03/18 Python
Python常用知识点汇总
2016/05/08 Python
Python实现利用最大公约数求三个正整数的最小公倍数示例
2017/09/30 Python
python实现批量视频分帧、保存视频帧
2019/05/31 Python
python实现多线程端口扫描
2019/08/31 Python
python实现与redis交互操作详解
2020/04/21 Python
python numpy库np.percentile用法说明
2020/06/08 Python
业务部经理岗位职责
2014/01/04 职场文书
中学生学雷锋活动心得体会
2014/03/10 职场文书
保密工作责任书
2014/04/16 职场文书
2014年学校体育工作总结
2014/12/08 职场文书
优秀高中学生评语
2014/12/30 职场文书
同学会邀请函模板
2015/01/30 职场文书
投标邀请书范本
2015/02/02 职场文书
承诺保证书格式
2015/02/28 职场文书
学雷锋广播稿大全
2015/08/19 职场文书
作文之亲情600字
2019/09/23 职场文书
导游词之天津古文化街
2019/11/09 职场文书
Vue中插槽slot的使用方法与应用场景详析
2021/06/08 Vue.js