哈希(音译,英语hash,意:散列)算法大家应该都接触过,有很多用途,比如校验文件是否被篡改。
有很多种散列算法,如md5,sha1等。这种算法不可逆。
md5.js
function hex_md5(r){return rstr2hex(rstr_md5(str2rstr_utf8(r)))}function b64_md5(r){return rstr2b64(rstr_md5(str2rstr_utf8(r)))}function any_md5(r,t){return rstr2any(rstr_md5(str2rstr_utf8(r)),t)}function hex_hmac_md5(r,t){return rstr2hex(rstr_hmac_md5(str2rstr_utf8(r),str2rstr_utf8(t)))}function b64_hmac_md5(r,t){return rstr2b64(rstr_hmac_md5(str2rstr_utf8(r),str2rstr_utf8(t)))}function any_hmac_md5(r,t,d){return rstr2any(rstr_hmac_md5(str2rstr_utf8(r),str2rstr_utf8(t)),d)}function md5_vm_test(){return"900150983cd24fb0d6963f7d28e17f72"==hex_md5("abc").toLowerCase()}function rstr_md5(r){return binl2rstr(binl_md5(rstr2binl(r),8*r.length))}function rstr_hmac_md5(r,t){var d=rstr2binl(r)
d.length>16&&(d=binl_md5(d,8*r.length))
for(var n=Array(16),_=Array(16),m=0;16>m;m++)n[m]=909522486^d[m],_[m]=1549556828^d[m]
var f=binl_md5(n.concat(rstr2binl(t)),512+8*t.length)
return binl2rstr(binl_md5(_.concat(f),640))}function rstr2hex(r){try{}catch(t){hexcase=0}for(var d,n=hexcase?"0123456789ABCDEF":"0123456789abcdef",_="",m=0;m<r.length;m++)d=r.charCodeAt(m),_+=n.charAt(d>>>4&15)+n.charAt(15&d)
return _}function rstr2b64(r){try{}catch(t){b64pad=""}for(var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n="",_=r.length,m=0;_>m;m+=3)for(var f=r.charCodeAt(m)<<16|(_>m+1?r.charCodeAt(m+1)<<8:0)|(_>m+2?r.charCodeAt(m+2):0),e=0;4>e;e++)n+=8*m+6*e>8*r.length?b64pad:d.charAt(f>>>6*(3-e)&63)
return n}function rstr2any(r,t){var d,n,_,m,f,e=t.length,h=Array(Math.ceil(r.length/2))
for(d=0;d<h.length;d++)h[d]=r.charCodeAt(2*d)<<8|r.charCodeAt(2*d+1)
var a=Math.ceil(8*r.length/(Math.log(t.length)/Math.log(2))),o=Array(a)
for(n=0;a>n;n++){for(f=[],m=0,d=0;d<h.length;d++)m=(m<<16)+h[d],_=Math.floor(m/e),m-=_*e,(f.length>0||_>0)&&(f[f.length]=_)
o[n]=m,h=f}var i=""
for(d=o.length-1;d>=0;d--)i+=t.charAt(o[d])
return i}function str2rstr_utf8(r){for(var t,d,n="",_=-1;++_<r.length;)t=r.charCodeAt(_),d=_+1<r.length?r.charCodeAt(_+1):0,t>=55296&&56319>=t&&d>=56320&&57343>=d&&(t=65536+((1023&t)<<10)+(1023&d),_++),127>=t?n+=String.fromCharCode(t):2047>=t?n+=String.fromCharCode(192|t>>>6&31,128|63&t):65535>=t?n+=String.fromCharCode(224|t>>>12&15,128|t>>>6&63,128|63&t):2097151>=t&&(n+=String.fromCharCode(240|t>>>18&7,128|t>>>12&63,128|t>>>6&63,128|63&t))
return n}function str2rstr_utf16le(r){for(var t="",d=0;d<r.length;d++)t+=String.fromCharCode(255&r.charCodeAt(d),r.charCodeAt(d)>>>8&255)
return t}function str2rstr_utf16be(r){for(var t="",d=0;d<r.length;d++)t+=String.fromCharCode(r.charCodeAt(d)>>>8&255,255&r.charCodeAt(d))
return t}function rstr2binl(r){for(var t=Array(r.length>>2),d=0;d<t.length;d++)t[d]=0
for(var d=0;d<8*r.length;d+=8)t[d>>5]|=(255&r.charCodeAt(d/8))<<d%32
return t}function binl2rstr(r){for(var t="",d=0;d<32*r.length;d+=8)t+=String.fromCharCode(r[d>>5]>>>d%32&255)
return t}function binl_md5(r,t){r[t>>5]|=128<<t%32,r[(t+64>>>9<<4)+14]=t
for(var d=1732584193,n=-271733879,_=-1732584194,m=271733878,f=0;f<r.length;f+=16){var e=d,h=n,a=_,o=m
d=md5_ff(d,n,_,m,r[f+0],7,-680876936),m=md5_ff(m,d,n,_,r[f+1],12,-389564586),_=md5_ff(_,m,d,n,r[f+2],17,606105819),n=md5_ff(n,_,m,d,r[f+3],22,-1044525330),d=md5_ff(d,n,_,m,r[f+4],7,-176418897),m=md5_ff(m,d,n,_,r[f+5],12,1200080426),_=md5_ff(_,m,d,n,r[f+6],17,-1473231341),n=md5_ff(n,_,m,d,r[f+7],22,-45705983),d=md5_ff(d,n,_,m,r[f+8],7,1770035416),m=md5_ff(m,d,n,_,r[f+9],12,-1958414417),_=md5_ff(_,m,d,n,r[f+10],17,-42063),n=md5_ff(n,_,m,d,r[f+11],22,-1990404162),d=md5_ff(d,n,_,m,r[f+12],7,1804603682),m=md5_ff(m,d,n,_,r[f+13],12,-40341101),_=md5_ff(_,m,d,n,r[f+14],17,-1502002290),n=md5_ff(n,_,m,d,r[f+15],22,1236535329),d=md5_gg(d,n,_,m,r[f+1],5,-165796510),m=md5_gg(m,d,n,_,r[f+6],9,-1069501632),_=md5_gg(_,m,d,n,r[f+11],14,643717713),n=md5_gg(n,_,m,d,r[f+0],20,-373897302),d=md5_gg(d,n,_,m,r[f+5],5,-701558691),m=md5_gg(m,d,n,_,r[f+10],9,38016083),_=md5_gg(_,m,d,n,r[f+15],14,-660478335),n=md5_gg(n,_,m,d,r[f+4],20,-405537848),d=md5_gg(d,n,_,m,r[f+9],5,568446438),m=md5_gg(m,d,n,_,r[f+14],9,-1019803690),_=md5_gg(_,m,d,n,r[f+3],14,-187363961),n=md5_gg(n,_,m,d,r[f+8],20,1163531501),d=md5_gg(d,n,_,m,r[f+13],5,-1444681467),m=md5_gg(m,d,n,_,r[f+2],9,-51403784),_=md5_gg(_,m,d,n,r[f+7],14,1735328473),n=md5_gg(n,_,m,d,r[f+12],20,-1926607734),d=md5_hh(d,n,_,m,r[f+5],4,-378558),m=md5_hh(m,d,n,_,r[f+8],11,-2022574463),_=md5_hh(_,m,d,n,r[f+11],16,1839030562),n=md5_hh(n,_,m,d,r[f+14],23,-35309556),d=md5_hh(d,n,_,m,r[f+1],4,-1530992060),m=md5_hh(m,d,n,_,r[f+4],11,1272893353),_=md5_hh(_,m,d,n,r[f+7],16,-155497632),n=md5_hh(n,_,m,d,r[f+10],23,-1094730640),d=md5_hh(d,n,_,m,r[f+13],4,681279174),m=md5_hh(m,d,n,_,r[f+0],11,-358537222),_=md5_hh(_,m,d,n,r[f+3],16,-722521979),n=md5_hh(n,_,m,d,r[f+6],23,76029189),d=md5_hh(d,n,_,m,r[f+9],4,-640364487),m=md5_hh(m,d,n,_,r[f+12],11,-421815835),_=md5_hh(_,m,d,n,r[f+15],16,530742520),n=md5_hh(n,_,m,d,r[f+2],23,-995338651),d=md5_ii(d,n,_,m,r[f+0],6,-198630844),m=md5_ii(m,d,n,_,r[f+7],10,1126891415),_=md5_ii(_,m,d,n,r[f+14],15,-1416354905),n=md5_ii(n,_,m,d,r[f+5],21,-57434055),d=md5_ii(d,n,_,m,r[f+12],6,1700485571),m=md5_ii(m,d,n,_,r[f+3],10,-1894986606),_=md5_ii(_,m,d,n,r[f+10],15,-1051523),n=md5_ii(n,_,m,d,r[f+1],21,-2054922799),d=md5_ii(d,n,_,m,r[f+8],6,1873313359),m=md5_ii(m,d,n,_,r[f+15],10,-30611744),_=md5_ii(_,m,d,n,r[f+6],15,-1560198380),n=md5_ii(n,_,m,d,r[f+13],21,1309151649),d=md5_ii(d,n,_,m,r[f+4],6,-145523070),m=md5_ii(m,d,n,_,r[f+11],10,-1120210379),_=md5_ii(_,m,d,n,r[f+2],15,718787259),n=md5_ii(n,_,m,d,r[f+9],21,-343485551),d=safe_add(d,e),n=safe_add(n,h),_=safe_add(_,a),m=safe_add(m,o)}return[d,n,_,m]}function md5_cmn(r,t,d,n,_,m){return safe_add(bit_rol(safe_add(safe_add(t,r),safe_add(n,m)),_),d)}function md5_ff(r,t,d,n,_,m,f){return md5_cmn(t&d|~t&n,r,t,_,m,f)}function md5_gg(r,t,d,n,_,m,f){return md5_cmn(t&n|d&~n,r,t,_,m,f)}function md5_hh(r,t,d,n,_,m,f){return md5_cmn(t^d^n,r,t,_,m,f)}function md5_ii(r,t,d,n,_,m,f){return md5_cmn(d^(t|~n),r,t,_,m,f)}function safe_add(r,t){var d=(65535&r)+(65535&t),n=(r>>16)+(t>>16)+(d>>16)
return n<<16|65535&d}function bit_rol(r,t){return r<<t|r>>>32-t}var hexcase=0,b64pad=""
RIPEMD-160.js
function hex_rmd160(r){return rstr2hex(rstr_rmd160(str2rstr_utf8(r)))}function b64_rmd160(r){return rstr2b64(rstr_rmd160(str2rstr_utf8(r)))}function any_rmd160(r,t){return rstr2any(rstr_rmd160(str2rstr_utf8(r)),t)}function hex_hmac_rmd160(r,t){return rstr2hex(rstr_hmac_rmd160(str2rstr_utf8(r),str2rstr_utf8(t)))}function b64_hmac_rmd160(r,t){return rstr2b64(rstr_hmac_rmd160(str2rstr_utf8(r),str2rstr_utf8(t)))}function any_hmac_rmd160(r,t,n){return rstr2any(rstr_hmac_rmd160(str2rstr_utf8(r),str2rstr_utf8(t)),n)}function rmd160_vm_test(){return"8eb208f7e05d987a9b044a8e98c6b087f15a0bfc"==hex_rmd160("abc").toLowerCase()}function rstr_rmd160(r){return binl2rstr(binl_rmd160(rstr2binl(r),8*r.length))}function rstr_hmac_rmd160(r,t){var n=rstr2binl(r)
n.length>16&&(n=binl_rmd160(n,8*r.length))
for(var d=Array(16),a=Array(16),e=0;16>e;e++)d[e]=909522486^n[e],a[e]=1549556828^n[e]
var _=binl_rmd160(d.concat(rstr2binl(t)),512+8*t.length)
return binl2rstr(binl_rmd160(a.concat(_),672))}function rstr2hex(r){try{}catch(t){hexcase=0}for(var n,d=hexcase?"0123456789ABCDEF":"0123456789abcdef",a="",e=0;e<r.length;e++)n=r.charCodeAt(e),a+=d.charAt(n>>>4&15)+d.charAt(15&n)
return a}function rstr2b64(r){try{}catch(t){b64pad=""}for(var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d="",a=r.length,e=0;a>e;e+=3)for(var _=r.charCodeAt(e)<<16|(a>e+1?r.charCodeAt(e+1)<<8:0)|(a>e+2?r.charCodeAt(e+2):0),f=0;4>f;f++)d+=8*e+6*f>8*r.length?b64pad:n.charAt(_>>>6*(3-f)&63)
return d}function rstr2any(r,t){var n,d,a,e,_=t.length,f=[],h=Array(Math.ceil(r.length/2))
for(n=0;n<h.length;n++)h[n]=r.charCodeAt(2*n)<<8|r.charCodeAt(2*n+1)
for(;h.length>0;){for(e=[],a=0,n=0;n<h.length;n++)a=(a<<16)+h[n],d=Math.floor(a/_),a-=d*_,(e.length>0||d>0)&&(e[e.length]=d)
f[f.length]=a,h=e}var o=""
for(n=f.length-1;n>=0;n--)o+=t.charAt(f[n])
var m=Math.ceil(8*r.length/(Math.log(t.length)/Math.log(2)))
for(n=o.length;m>n;n++)o=t[0]+o
return o}function str2rstr_utf8(r){for(var t,n,d="",a=-1;++a<r.length;)t=r.charCodeAt(a),n=a+1<r.length?r.charCodeAt(a+1):0,t>=55296&&56319>=t&&n>=56320&&57343>=n&&(t=65536+((1023&t)<<10)+(1023&n),a++),127>=t?d+=String.fromCharCode(t):2047>=t?d+=String.fromCharCode(192|t>>>6&31,128|63&t):65535>=t?d+=String.fromCharCode(224|t>>>12&15,128|t>>>6&63,128|63&t):2097151>=t&&(d+=String.fromCharCode(240|t>>>18&7,128|t>>>12&63,128|t>>>6&63,128|63&t))
return d}function str2rstr_utf16le(r){for(var t="",n=0;n<r.length;n++)t+=String.fromCharCode(255&r.charCodeAt(n),r.charCodeAt(n)>>>8&255)
return t}function str2rstr_utf16be(r){for(var t="",n=0;n<r.length;n++)t+=String.fromCharCode(r.charCodeAt(n)>>>8&255,255&r.charCodeAt(n))
return t}function rstr2binl(r){for(var t=Array(r.length>>2),n=0;n<t.length;n++)t[n]=0
for(var n=0;n<8*r.length;n+=8)t[n>>5]|=(255&r.charCodeAt(n/8))<<n%32
return t}function binl2rstr(r){for(var t="",n=0;n<32*r.length;n+=8)t+=String.fromCharCode(r[n>>5]>>>n%32&255)
return t}function binl_rmd160(r,t){r[t>>5]|=128<<t%32,r[(t+64>>>9<<4)+14]=t
for(var n=1732584193,d=4023233417,a=2562383102,e=271733878,_=3285377520,f=0;f<r.length;f+=16){for(var h,o=n,m=d,s=a,c=e,u=_,i=n,g=d,l=a,b=e,C=_,A=0;79>=A;++A)h=safe_add(o,rmd160_f(A,m,s,c)),h=safe_add(h,r[f+rmd160_r1[A]]),h=safe_add(h,rmd160_K1(A)),h=safe_add(bit_rol(h,rmd160_s1[A]),u),o=u,u=c,c=bit_rol(s,10),s=m,m=h,h=safe_add(i,rmd160_f(79-A,g,l,b)),h=safe_add(h,r[f+rmd160_r2[A]]),h=safe_add(h,rmd160_K2(A)),h=safe_add(bit_rol(h,rmd160_s2[A]),C),i=C,C=b,b=bit_rol(l,10),l=g,g=h
h=safe_add(d,safe_add(s,b)),d=safe_add(a,safe_add(c,C)),a=safe_add(e,safe_add(u,i)),e=safe_add(_,safe_add(o,g)),_=safe_add(n,safe_add(m,l)),n=h}return[n,d,a,e,_]}function rmd160_f(r,t,n,d){return r>=0&&15>=r?t^n^d:r>=16&&31>=r?t&n|~t&d:r>=32&&47>=r?(t|~n)^d:r>=48&&63>=r?t&d|n&~d:r>=64&&79>=r?t^(n|~d):"rmd160_f: j out of range"}function rmd160_K1(r){return r>=0&&15>=r?0:r>=16&&31>=r?1518500249:r>=32&&47>=r?1859775393:r>=48&&63>=r?2400959708:r>=64&&79>=r?2840853838:"rmd160_K1: j out of range"}function rmd160_K2(r){return r>=0&&15>=r?1352829926:r>=16&&31>=r?1548603684:r>=32&&47>=r?1836072691:r>=48&&63>=r?2053994217:r>=64&&79>=r?0:"rmd160_K2: j out of range"}function safe_add(r,t){var n=(65535&r)+(65535&t),d=(r>>16)+(t>>16)+(n>>16)
return d<<16|65535&n}function bit_rol(r,t){return r<<t|r>>>32-t}var hexcase=0,b64pad="",rmd160_r1=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],rmd160_r2=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],rmd160_s1=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],rmd160_s2=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]
sha1.js
function hex_sha1(r){return rstr2hex(rstr_sha1(str2rstr_utf8(r)))}function b64_sha1(r){return rstr2b64(rstr_sha1(str2rstr_utf8(r)))}function any_sha1(r,t){return rstr2any(rstr_sha1(str2rstr_utf8(r)),t)}function hex_hmac_sha1(r,t){return rstr2hex(rstr_hmac_sha1(str2rstr_utf8(r),str2rstr_utf8(t)))}function b64_hmac_sha1(r,t){return rstr2b64(rstr_hmac_sha1(str2rstr_utf8(r),str2rstr_utf8(t)))}function any_hmac_sha1(r,t,n){return rstr2any(rstr_hmac_sha1(str2rstr_utf8(r),str2rstr_utf8(t)),n)}function sha1_vm_test(){return"a9993e364706816aba3e25717850c26c9cd0d89d"==hex_sha1("abc").toLowerCase()}function rstr_sha1(r){return binb2rstr(binb_sha1(rstr2binb(r),8*r.length))}function rstr_hmac_sha1(r,t){var n=rstr2binb(r)
n.length>16&&(n=binb_sha1(n,8*r.length))
for(var a=Array(16),e=Array(16),d=0;16>d;d++)a[d]=909522486^n[d],e[d]=1549556828^n[d]
var f=binb_sha1(a.concat(rstr2binb(t)),512+8*t.length)
return binb2rstr(binb_sha1(e.concat(f),672))}function rstr2hex(r){try{}catch(t){hexcase=0}for(var n,a=hexcase?"0123456789ABCDEF":"0123456789abcdef",e="",d=0;d<r.length;d++)n=r.charCodeAt(d),e+=a.charAt(n>>>4&15)+a.charAt(15&n)
return e}function rstr2b64(r){try{}catch(t){b64pad=""}for(var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a="",e=r.length,d=0;e>d;d+=3)for(var f=r.charCodeAt(d)<<16|(e>d+1?r.charCodeAt(d+1)<<8:0)|(e>d+2?r.charCodeAt(d+2):0),h=0;4>h;h++)a+=8*d+6*h>8*r.length?b64pad:n.charAt(f>>>6*(3-h)&63)
return a}function rstr2any(r,t){var n,a,e,d,f=t.length,h=[],_=Array(Math.ceil(r.length/2))
for(n=0;n<_.length;n++)_[n]=r.charCodeAt(2*n)<<8|r.charCodeAt(2*n+1)
for(;_.length>0;){for(d=[],e=0,n=0;n<_.length;n++)e=(e<<16)+_[n],a=Math.floor(e/f),e-=a*f,(d.length>0||a>0)&&(d[d.length]=a)
h[h.length]=e,_=d}var o=""
for(n=h.length-1;n>=0;n--)o+=t.charAt(h[n])
var s=Math.ceil(8*r.length/(Math.log(t.length)/Math.log(2)))
for(n=o.length;s>n;n++)o=t[0]+o
return o}function str2rstr_utf8(r){for(var t,n,a="",e=-1;++e<r.length;)t=r.charCodeAt(e),n=e+1<r.length?r.charCodeAt(e+1):0,t>=55296&&56319>=t&&n>=56320&&57343>=n&&(t=65536+((1023&t)<<10)+(1023&n),e++),127>=t?a+=String.fromCharCode(t):2047>=t?a+=String.fromCharCode(192|t>>>6&31,128|63&t):65535>=t?a+=String.fromCharCode(224|t>>>12&15,128|t>>>6&63,128|63&t):2097151>=t&&(a+=String.fromCharCode(240|t>>>18&7,128|t>>>12&63,128|t>>>6&63,128|63&t))
return a}function str2rstr_utf16le(r){for(var t="",n=0;n<r.length;n++)t+=String.fromCharCode(255&r.charCodeAt(n),r.charCodeAt(n)>>>8&255)
return t}function str2rstr_utf16be(r){for(var t="",n=0;n<r.length;n++)t+=String.fromCharCode(r.charCodeAt(n)>>>8&255,255&r.charCodeAt(n))
return t}function rstr2binb(r){for(var t=Array(r.length>>2),n=0;n<t.length;n++)t[n]=0
for(var n=0;n<8*r.length;n+=8)t[n>>5]|=(255&r.charCodeAt(n/8))<<24-n%32
return t}function binb2rstr(r){for(var t="",n=0;n<32*r.length;n+=8)t+=String.fromCharCode(r[n>>5]>>>24-n%32&255)
return t}function binb_sha1(r,t){r[t>>5]|=128<<24-t%32,r[(t+64>>9<<4)+15]=t
for(var n=Array(80),a=1732584193,e=-271733879,d=-1732584194,f=271733878,h=-1009589776,_=0;_<r.length;_+=16){for(var o=a,s=e,c=d,u=f,m=h,i=0;80>i;i++){16>i?n[i]=r[_+i]:n[i]=bit_rol(n[i-3]^n[i-8]^n[i-14]^n[i-16],1)
var g=safe_add(safe_add(bit_rol(a,5),sha1_ft(i,e,d,f)),safe_add(safe_add(h,n[i]),sha1_kt(i)))
h=f,f=d,d=bit_rol(e,30),e=a,a=g}a=safe_add(a,o),e=safe_add(e,s),d=safe_add(d,c),f=safe_add(f,u),h=safe_add(h,m)}return[a,e,d,f,h]}function sha1_ft(r,t,n,a){return 20>r?t&n|~t&a:40>r?t^n^a:60>r?t&n|t&a|n&a:t^n^a}function sha1_kt(r){return 20>r?1518500249:40>r?1859775393:60>r?-1894007588:-899497514}function safe_add(r,t){var n=(65535&r)+(65535&t),a=(r>>16)+(t>>16)+(n>>16)
return a<<16|65535&n}function bit_rol(r,t){return r<<t|r>>>32-t}var hexcase=0,b64pad=""
sha256.js
function hex_sha256(r){return rstr2hex(rstr_sha256(str2rstr_utf8(r)))}function b64_sha256(r){return rstr2b64(rstr_sha256(str2rstr_utf8(r)))}function any_sha256(r,t){return rstr2any(rstr_sha256(str2rstr_utf8(r)),t)}function hex_hmac_sha256(r,t){return rstr2hex(rstr_hmac_sha256(str2rstr_utf8(r),str2rstr_utf8(t)))}function b64_hmac_sha256(r,t){return rstr2b64(rstr_hmac_sha256(str2rstr_utf8(r),str2rstr_utf8(t)))}function any_hmac_sha256(r,t,a){return rstr2any(rstr_hmac_sha256(str2rstr_utf8(r),str2rstr_utf8(t)),a)}function sha256_vm_test(){return"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad"==hex_sha256("abc").toLowerCase()}function rstr_sha256(r){return binb2rstr(binb_sha256(rstr2binb(r),8*r.length))}function rstr_hmac_sha256(r,t){var a=rstr2binb(r)
a.length>16&&(a=binb_sha256(a,8*r.length))
for(var n=Array(16),e=Array(16),h=0;16>h;h++)n[h]=909522486^a[h],e[h]=1549556828^a[h]
var d=binb_sha256(n.concat(rstr2binb(t)),512+8*t.length)
return binb2rstr(binb_sha256(e.concat(d),768))}function rstr2hex(r){try{}catch(t){hexcase=0}for(var a,n=hexcase?"0123456789ABCDEF":"0123456789abcdef",e="",h=0;h<r.length;h++)a=r.charCodeAt(h),e+=n.charAt(a>>>4&15)+n.charAt(15&a)
return e}function rstr2b64(r){try{}catch(t){b64pad=""}for(var a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n="",e=r.length,h=0;e>h;h+=3)for(var d=r.charCodeAt(h)<<16|(e>h+1?r.charCodeAt(h+1)<<8:0)|(e>h+2?r.charCodeAt(h+2):0),f=0;4>f;f++)n+=8*h+6*f>8*r.length?b64pad:a.charAt(d>>>6*(3-f)&63)
return n}function rstr2any(r,t){var a,n,e,h,d=t.length,f=[],_=Array(Math.ceil(r.length/2))
for(a=0;a<_.length;a++)_[a]=r.charCodeAt(2*a)<<8|r.charCodeAt(2*a+1)
for(;_.length>0;){for(h=[],e=0,a=0;a<_.length;a++)e=(e<<16)+_[a],n=Math.floor(e/d),e-=n*d,(h.length>0||n>0)&&(h[h.length]=n)
f[f.length]=e,_=h}var s=""
for(a=f.length-1;a>=0;a--)s+=t.charAt(f[a])
var o=Math.ceil(8*r.length/(Math.log(t.length)/Math.log(2)))
for(a=s.length;o>a;a++)s=t[0]+s
return s}function str2rstr_utf8(r){for(var t,a,n="",e=-1;++e<r.length;)t=r.charCodeAt(e),a=e+1<r.length?r.charCodeAt(e+1):0,t>=55296&&56319>=t&&a>=56320&&57343>=a&&(t=65536+((1023&t)<<10)+(1023&a),e++),127>=t?n+=String.fromCharCode(t):2047>=t?n+=String.fromCharCode(192|t>>>6&31,128|63&t):65535>=t?n+=String.fromCharCode(224|t>>>12&15,128|t>>>6&63,128|63&t):2097151>=t&&(n+=String.fromCharCode(240|t>>>18&7,128|t>>>12&63,128|t>>>6&63,128|63&t))
return n}function str2rstr_utf16le(r){for(var t="",a=0;a<r.length;a++)t+=String.fromCharCode(255&r.charCodeAt(a),r.charCodeAt(a)>>>8&255)
return t}function str2rstr_utf16be(r){for(var t="",a=0;a<r.length;a++)t+=String.fromCharCode(r.charCodeAt(a)>>>8&255,255&r.charCodeAt(a))
return t}function rstr2binb(r){for(var t=Array(r.length>>2),a=0;a<t.length;a++)t[a]=0
for(var a=0;a<8*r.length;a+=8)t[a>>5]|=(255&r.charCodeAt(a/8))<<24-a%32
return t}function binb2rstr(r){for(var t="",a=0;a<32*r.length;a+=8)t+=String.fromCharCode(r[a>>5]>>>24-a%32&255)
return t}function sha256_S(r,t){return r>>>t|r<<32-t}function sha256_R(r,t){return r>>>t}function sha256_Ch(r,t,a){return r&t^~r&a}function sha256_Maj(r,t,a){return r&t^r&a^t&a}function sha256_Sigma0256(r){return sha256_S(r,2)^sha256_S(r,13)^sha256_S(r,22)}function sha256_Sigma1256(r){return sha256_S(r,6)^sha256_S(r,11)^sha256_S(r,25)}function sha256_Gamma0256(r){return sha256_S(r,7)^sha256_S(r,18)^sha256_R(r,3)}function sha256_Gamma1256(r){return sha256_S(r,17)^sha256_S(r,19)^sha256_R(r,10)}function sha256_Sigma0512(r){return sha256_S(r,28)^sha256_S(r,34)^sha256_S(r,39)}function sha256_Sigma1512(r){return sha256_S(r,14)^sha256_S(r,18)^sha256_S(r,41)}function sha256_Gamma0512(r){return sha256_S(r,1)^sha256_S(r,8)^sha256_R(r,7)}function sha256_Gamma1512(r){return sha256_S(r,19)^sha256_S(r,61)^sha256_R(r,6)}function binb_sha256(r,t){var a,n,e,h,d,f,_,s,o,c,u,i,m=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],g=Array(64)
for(r[t>>5]|=128<<24-t%32,r[(t+64>>9<<4)+15]=t,o=0;o<r.length;o+=16){for(a=m[0],n=m[1],e=m[2],h=m[3],d=m[4],f=m[5],_=m[6],s=m[7],c=0;64>c;c++)16>c?g[c]=r[c+o]:g[c]=safe_add(safe_add(safe_add(sha256_Gamma1256(g[c-2]),g[c-7]),sha256_Gamma0256(g[c-15])),g[c-16]),u=safe_add(safe_add(safe_add(safe_add(s,sha256_Sigma1256(d)),sha256_Ch(d,f,_)),sha256_K[c]),g[c]),i=safe_add(sha256_Sigma0256(a),sha256_Maj(a,n,e)),s=_,_=f,f=d,d=safe_add(h,u),h=e,e=n,n=a,a=safe_add(u,i)
m[0]=safe_add(a,m[0]),m[1]=safe_add(n,m[1]),m[2]=safe_add(e,m[2]),m[3]=safe_add(h,m[3]),m[4]=safe_add(d,m[4]),m[5]=safe_add(f,m[5]),m[6]=safe_add(_,m[6]),m[7]=safe_add(s,m[7])}return m}function safe_add(r,t){var a=(65535&r)+(65535&t),n=(r>>16)+(t>>16)+(a>>16)
return n<<16|65535&a}var hexcase=0,b64pad="",sha256_K=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998]
sha512.js
function hex_sha512(r){return rstr2hex(rstr_sha512(str2rstr_utf8(r)))}function b64_sha512(r){return rstr2b64(rstr_sha512(str2rstr_utf8(r)))}function any_sha512(r,t){return rstr2any(rstr_sha512(str2rstr_utf8(r)),t)}function hex_hmac_sha512(r,t){return rstr2hex(rstr_hmac_sha512(str2rstr_utf8(r),str2rstr_utf8(t)))}function b64_hmac_sha512(r,t){return rstr2b64(rstr_hmac_sha512(str2rstr_utf8(r),str2rstr_utf8(t)))}function any_hmac_sha512(r,t,n){return rstr2any(rstr_hmac_sha512(str2rstr_utf8(r),str2rstr_utf8(t)),n)}function sha512_vm_test(){return"ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f"==hex_sha512("abc").toLowerCase()}function rstr_sha512(r){return binb2rstr(binb_sha512(rstr2binb(r),8*r.length))}function rstr_hmac_sha512(r,t){var n=rstr2binb(r)
n.length>32&&(n=binb_sha512(n,8*r.length))
for(var a=Array(32),e=Array(32),h=0;32>h;h++)a[h]=909522486^n[h],e[h]=1549556828^n[h]
var f=binb_sha512(a.concat(rstr2binb(t)),1024+8*t.length)
return binb2rstr(binb_sha512(e.concat(f),1536))}function rstr2hex(r){try{}catch(t){hexcase=0}for(var n,a=hexcase?"0123456789ABCDEF":"0123456789abcdef",e="",h=0;h<r.length;h++)n=r.charCodeAt(h),e+=a.charAt(n>>>4&15)+a.charAt(15&n)
return e}function rstr2b64(r){try{}catch(t){b64pad=""}for(var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a="",e=r.length,h=0;e>h;h+=3)for(var f=r.charCodeAt(h)<<16|(e>h+1?r.charCodeAt(h+1)<<8:0)|(e>h+2?r.charCodeAt(h+2):0),s=0;4>s;s++)a+=8*h+6*s>8*r.length?b64pad:n.charAt(f>>>6*(3-s)&63)
return a}function rstr2any(r,t){var n,a,e,h,f,s=t.length,o=Array(Math.ceil(r.length/2))
for(n=0;n<o.length;n++)o[n]=r.charCodeAt(2*n)<<8|r.charCodeAt(2*n+1)
var d=Math.ceil(8*r.length/(Math.log(t.length)/Math.log(2))),_=Array(d)
for(a=0;d>a;a++){for(f=[],h=0,n=0;n<o.length;n++)h=(h<<16)+o[n],e=Math.floor(h/s),h-=e*s,(f.length>0||e>0)&&(f[f.length]=e)
_[a]=h,o=f}var i=""
for(n=_.length-1;n>=0;n--)i+=t.charAt(_[n])
return i}function str2rstr_utf8(r){for(var t,n,a="",e=-1;++e<r.length;)t=r.charCodeAt(e),n=e+1<r.length?r.charCodeAt(e+1):0,t>=55296&&56319>=t&&n>=56320&&57343>=n&&(t=65536+((1023&t)<<10)+(1023&n),e++),127>=t?a+=String.fromCharCode(t):2047>=t?a+=String.fromCharCode(192|t>>>6&31,128|63&t):65535>=t?a+=String.fromCharCode(224|t>>>12&15,128|t>>>6&63,128|63&t):2097151>=t&&(a+=String.fromCharCode(240|t>>>18&7,128|t>>>12&63,128|t>>>6&63,128|63&t))
return a}function str2rstr_utf16le(r){for(var t="",n=0;n<r.length;n++)t+=String.fromCharCode(255&r.charCodeAt(n),r.charCodeAt(n)>>>8&255)
return t}function str2rstr_utf16be(r){for(var t="",n=0;n<r.length;n++)t+=String.fromCharCode(r.charCodeAt(n)>>>8&255,255&r.charCodeAt(n))
return t}function rstr2binb(r){for(var t=Array(r.length>>2),n=0;n<t.length;n++)t[n]=0
for(var n=0;n<8*r.length;n+=8)t[n>>5]|=(255&r.charCodeAt(n/8))<<24-n%32
return t}function binb2rstr(r){for(var t="",n=0;n<32*r.length;n+=8)t+=String.fromCharCode(r[n>>5]>>>24-n%32&255)
return t}function binb_sha512(r,t){void 0==sha512_k&&(sha512_k=[new int64(1116352408,-685199838),new int64(1899447441,602891725),new int64(-1245643825,-330482897),new int64(-373957723,-2121671748),new int64(961987163,-213338824),new int64(1508970993,-1241133031),new int64(-1841331548,-1357295717),new int64(-1424204075,-630357736),new int64(-670586216,-1560083902),new int64(310598401,1164996542),new int64(607225278,1323610764),new int64(1426881987,-704662302),new int64(1925078388,-226784913),new int64(-2132889090,991336113),new int64(-1680079193,633803317),new int64(-1046744716,-815192428),new int64(-459576895,-1628353838),new int64(-272742522,944711139),new int64(264347078,-1953704523),new int64(604807628,2007800933),new int64(770255983,1495990901),new int64(1249150122,1856431235),new int64(1555081692,-1119749164),new int64(1996064986,-2096016459),new int64(-1740746414,-295247957),new int64(-1473132947,766784016),new int64(-1341970488,-1728372417),new int64(-1084653625,-1091629340),new int64(-958395405,1034457026),new int64(-710438585,-1828018395),new int64(113926993,-536640913),new int64(338241895,168717936),new int64(666307205,1188179964),new int64(773529912,1546045734),new int64(1294757372,1522805485),new int64(1396182291,-1651133473),new int64(1695183700,-1951439906),new int64(1986661051,1014477480),new int64(-2117940946,1206759142),new int64(-1838011259,344077627),new int64(-1564481375,1290863460),new int64(-1474664885,-1136513023),new int64(-1035236496,-789014639),new int64(-949202525,106217008),new int64(-778901479,-688958952),new int64(-694614492,1432725776),new int64(-200395387,1467031594),new int64(275423344,851169720),new int64(430227734,-1194143544),new int64(506948616,1363258195),new int64(659060556,-544281703),new int64(883997877,-509917016),new int64(958139571,-976659869),new int64(1322822218,-482243893),new int64(1537002063,2003034995),new int64(1747873779,-692930397),new int64(1955562222,1575990012),new int64(2024104815,1125592928),new int64(-2067236844,-1578062990),new int64(-1933114872,442776044),new int64(-1866530822,593698344),new int64(-1538233109,-561857047),new int64(-1090935817,-1295615723),new int64(-965641998,-479046869),new int64(-903397682,-366583396),new int64(-779700025,566280711),new int64(-354779690,-840897762),new int64(-176337025,-294727304),new int64(116418474,1914138554),new int64(174292421,-1563912026),new int64(289380356,-1090974290),new int64(460393269,320620315),new int64(685471733,587496836),new int64(852142971,1086792851),new int64(1017036298,365543100),new int64(1126000580,-1676669620),new int64(1288033470,-885112138),new int64(1501505948,-60457430),new int64(1607167915,987167468),new int64(1816402316,1246189591)])
var n,a,e=[new int64(1779033703,-205731576),new int64(-1150833019,-2067093701),new int64(1013904242,-23791573),new int64(-1521486534,1595750129),new int64(1359893119,-1377402159),new int64(-1694144372,725511199),new int64(528734635,-79577749),new int64(1541459225,327033209)],h=new int64(0,0),f=new int64(0,0),s=new int64(0,0),o=new int64(0,0),d=new int64(0,0),_=new int64(0,0),i=new int64(0,0),c=new int64(0,0),u=new int64(0,0),l=new int64(0,0),m=new int64(0,0),g=new int64(0,0),b=new int64(0,0),C=new int64(0,0),A=new int64(0,0),v=new int64(0,0),w=new int64(0,0),y=Array(80)
for(a=0;80>a;a++)y[a]=new int64(0,0)
for(r[t>>5]|=128<<24-(31&t),r[(t+128>>10<<5)+31]=t,a=0;a<r.length;a+=32){for(int64copy(s,e[0]),int64copy(o,e[1]),int64copy(d,e[2]),int64copy(_,e[3]),int64copy(i,e[4]),int64copy(c,e[5]),int64copy(u,e[6]),int64copy(l,e[7]),n=0;16>n;n++)y[n].h=r[a+2*n],y[n].l=r[a+2*n+1]
for(n=16;80>n;n++)int64rrot(A,y[n-2],19),int64revrrot(v,y[n-2],29),int64shr(w,y[n-2],6),g.l=A.l^v.l^w.l,g.h=A.h^v.h^w.h,int64rrot(A,y[n-15],1),int64rrot(v,y[n-15],8),int64shr(w,y[n-15],7),m.l=A.l^v.l^w.l,m.h=A.h^v.h^w.h,int64add4(y[n],g,y[n-7],m,y[n-16])
for(n=0;80>n;n++)b.l=i.l&c.l^~i.l&u.l,b.h=i.h&c.h^~i.h&u.h,int64rrot(A,i,14),int64rrot(v,i,18),int64revrrot(w,i,9),g.l=A.l^v.l^w.l,g.h=A.h^v.h^w.h,int64rrot(A,s,28),int64revrrot(v,s,2),int64revrrot(w,s,7),m.l=A.l^v.l^w.l,m.h=A.h^v.h^w.h,C.l=s.l&o.l^s.l&d.l^o.l&d.l,C.h=s.h&o.h^s.h&d.h^o.h&d.h,int64add5(h,l,g,b,sha512_k[n],y[n]),int64add(f,m,C),int64copy(l,u),int64copy(u,c),int64copy(c,i),int64add(i,_,h),int64copy(_,d),int64copy(d,o),int64copy(o,s),int64add(s,h,f)
int64add(e[0],e[0],s),int64add(e[1],e[1],o),int64add(e[2],e[2],d),int64add(e[3],e[3],_),int64add(e[4],e[4],i),int64add(e[5],e[5],c),int64add(e[6],e[6],u),int64add(e[7],e[7],l)}var S=Array(16)
for(a=0;8>a;a++)S[2*a]=e[a].h,S[2*a+1]=e[a].l
return S}function int64(r,t){this.h=r,this.l=t}function int64copy(r,t){r.h=t.h,r.l=t.l}function int64rrot(r,t,n){r.l=t.l>>>n|t.h<<32-n,r.h=t.h>>>n|t.l<<32-n}function int64revrrot(r,t,n){r.l=t.h>>>n|t.l<<32-n,r.h=t.l>>>n|t.h<<32-n}function int64shr(r,t,n){r.l=t.l>>>n|t.h<<32-n,r.h=t.h>>>n}function int64add(r,t,n){var a=(65535&t.l)+(65535&n.l),e=(t.l>>>16)+(n.l>>>16)+(a>>>16),h=(65535&t.h)+(65535&n.h)+(e>>>16),f=(t.h>>>16)+(n.h>>>16)+(h>>>16)
r.l=65535&a|e<<16,r.h=65535&h|f<<16}function int64add4(r,t,n,a,e){var h=(65535&t.l)+(65535&n.l)+(65535&a.l)+(65535&e.l),f=(t.l>>>16)+(n.l>>>16)+(a.l>>>16)+(e.l>>>16)+(h>>>16),s=(65535&t.h)+(65535&n.h)+(65535&a.h)+(65535&e.h)+(f>>>16),o=(t.h>>>16)+(n.h>>>16)+(a.h>>>16)+(e.h>>>16)+(s>>>16)
r.l=65535&h|f<<16,r.h=65535&s|o<<16}function int64add5(r,t,n,a,e,h){var f=(65535&t.l)+(65535&n.l)+(65535&a.l)+(65535&e.l)+(65535&h.l),s=(t.l>>>16)+(n.l>>>16)+(a.l>>>16)+(e.l>>>16)+(h.l>>>16)+(f>>>16),o=(65535&t.h)+(65535&n.h)+(65535&a.h)+(65535&e.h)+(65535&h.h)+(s>>>16),d=(t.h>>>16)+(n.h>>>16)+(a.h>>>16)+(e.h>>>16)+(h.h>>>16)+(o>>>16)
r.l=65535&f|s<<16,r.h=65535&o|d<<16}var hexcase=0,b64pad="",sha512_k
都整理了这么多了,制作不易,点个赞吧~
压缩工具:UglifyJS