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 相关文章推荐
jquery.tmpl JQuery模板插件
Oct 10 Javascript
Javascript创建自定义对象 创建Object实例添加属性和方法
Jun 04 Javascript
关于extjs4如何获取grid修改后的数据的问题
Aug 07 Javascript
JS网页播放声音实现代码兼容各种浏览器
Sep 22 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
Dec 13 Javascript
jQuery插件Timelinr 实现时间轴特效
Oct 04 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
Sep 14 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
May 13 Javascript
Vue.set() this.$set()引发的视图更新思考及注意事项
Aug 30 Javascript
taro 实现购物车逻辑的实例代码
Jun 05 Javascript
js实现滚动条自动滚动
Dec 13 Javascript
vue使用echarts画组织结构图
Feb 06 Vue.js
客户端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防盗链的常用方法小结
2010/07/02 PHP
php+iframe实现隐藏无刷新上传文件
2012/02/10 PHP
php线性表顺序存储实现代码(增删查改)
2012/02/16 PHP
php文件上传的例子及参数详解
2013/12/12 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
jQuery+css+html实现页面遮罩弹出框
2013/03/21 Javascript
解析JSON对象与字符串之间的相互转换
2013/12/18 Javascript
禁止IE用右键的JS代码
2013/12/30 Javascript
详解nodejs微信jssdk后端接口
2017/05/25 NodeJs
仿京东快报向上滚动的实例
2017/12/13 Javascript
vue-router项目实战总结篇
2018/02/11 Javascript
JavaScript禁用右键单击优缺点分析
2019/01/20 Javascript
Vue实现附件上传功能
2020/05/28 Javascript
探寻python多线程ctrl+c退出问题解决方案
2014/10/23 Python
Python中统计函数运行耗时的方法
2015/05/05 Python
深入学习Python中的装饰器使用
2016/06/20 Python
和孩子一起学习python之变量命名规则
2018/05/27 Python
python 判断参数为Nonetype类型或空的实例
2018/10/30 Python
Linux下通过python获取本机ip方法示例
2019/09/06 Python
Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法
2020/03/20 Python
意大利简约的休闲品牌:Aspesi
2018/02/08 全球购物
英国最大的独立玩具专卖店:The Entertainer
2019/09/06 全球购物
幼儿园门卫制度
2014/01/29 职场文书
一年级数学教学反思
2014/02/01 职场文书
党员党性分析材料
2014/02/17 职场文书
民生工程实施方案
2014/03/22 职场文书
闭幕式主持词
2014/04/02 职场文书
婚前协议书范本
2014/04/15 职场文书
热爱祖国的演讲稿
2014/05/04 职场文书
服务标语口号
2014/07/01 职场文书
会计试用期自我评价怎么写
2014/09/18 职场文书
民政局副局长民主生活会个人对照检查材料
2014/09/19 职场文书
2014年公务员工作总结
2014/11/18 职场文书
平安家庭事迹材料
2014/12/20 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书
python 如何用map()函数创建多线程任务
2021/04/07 Python