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 相关文章推荐
关于JavaScript中原型继承中的一点思考
Jul 25 Javascript
js加入收藏夹代码(兼容ie/ff/op)
May 16 Javascript
采用自执行的匿名函数解决for循环使用闭包的问题
Sep 11 Javascript
JavaScript插件化开发教程 (三)
Jan 27 Javascript
JS实现输入框提示文字点击时消失效果
Jul 19 Javascript
bootstrap——bootstrapTable实现隐藏列的示例
Jan 14 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
Feb 16 Javascript
JS基于正则表达式的替换操作(replace)用法示例
Apr 28 Javascript
javascript编写简易计算器
May 06 Javascript
vue数据双向绑定的注意点
Jun 23 Javascript
浅谈Vuejs Prop基本用法
Aug 17 Javascript
如何解决日期函数new Date()浏览器兼容性问题
Sep 11 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 文件上传全攻略
2010/04/28 PHP
PHP数据库连接mysql与mysqli对比分析
2016/01/04 PHP
Domino中运用jQuery读取视图内容的方法
2009/10/21 Javascript
js遍历td tr等html元素
2012/12/13 Javascript
javascript强大的日期函数代码分享
2013/09/04 Javascript
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
Javascript aop(面向切面编程)之around(环绕)分析
2015/05/01 Javascript
js实现的简单radio背景颜色选择器代码
2015/08/18 Javascript
微信小程序 实例应用(记账)详解
2016/09/28 Javascript
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
2017/04/13 jQuery
H5手机端多文件上传预览插件
2017/04/21 Javascript
webpack4 处理CSS的方法示例
2018/09/03 Javascript
微信小程序开发之tabbar图标和颜色的实现
2018/10/17 Javascript
vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知
2019/08/17 Javascript
如何基于javascript实现贪吃蛇游戏
2020/02/09 Javascript
iview实现图片上传功能
2020/06/29 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
2020/07/27 Javascript
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
Python实现的递归神经网络简单示例
2017/08/11 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
2018/01/10 Python
Python装饰器用法实例分析
2019/01/14 Python
WxPython实现无边框界面
2019/11/18 Python
Pytorch根据layers的name冻结训练方式
2020/01/06 Python
django model通过字典更新数据实例
2020/04/01 Python
PyTorch如何搭建一个简单的网络
2020/08/24 Python
英国香水店:The Perfume Shop
2017/03/27 全球购物
小学教师的个人自我鉴定
2013/10/24 职场文书
大学毕业生通用自我评价
2014/01/05 职场文书
房地产开盘策划方案
2014/02/10 职场文书
政法干警核心价值观心得体会
2014/09/11 职场文书
消防演习感想
2015/08/10 职场文书
2015年十月一日放假通知
2015/08/18 职场文书
史上最全的军训拉歌口号
2015/12/25 职场文书
技术转让协议书
2016/03/19 职场文书
Python OpenCV之常用滤波器使用详解
2022/04/07 Python
如何使用SQL Server语句创建表
2022/04/12 SQL Server