md5、sha256、sha512哈希算法的实现

/**
 * 计算字符串的md5散列值
 *
 * @param string str 字符串
 * @return string 字符串的md5散列值
 */
function md5(str){function md5_RotateLeft(lValue,iShiftBits){return(lValue<<iShiftBits)|(lValue>>>(32-iShiftBits))}function md5_AddUnsigned(lX,lY){var lX4,lY4,lX8,lY8,lResult;lX8=(lX&0x80000000);lY8=(lY&0x80000000);lX4=(lX&0x40000000);lY4=(lY&0x40000000);lResult=(lX&0x3FFFFFFF)+(lY&0x3FFFFFFF);if(lX4&lY4){return(lResult^0x80000000^lX8^lY8)}if(lX4|lY4){if(lResult&0x40000000){return(lResult^0xC0000000^lX8^lY8)}else{return(lResult^0x40000000^lX8^lY8)}}else{return(lResult^lX8^lY8)}}function md5_F(x,y,z){return(x&y)|((~x)&z)}function md5_G(x,y,z){return(x&z)|(y&(~z))}function md5_H(x,y,z){return(x^y^z)}function md5_I(x,y,z){return(y^(x|(~z)))}function md5_FF(a,b,c,d,x,s,ac){a=md5_AddUnsigned(a,md5_AddUnsigned(md5_AddUnsigned(md5_F(b,c,d),x),ac));return md5_AddUnsigned(md5_RotateLeft(a,s),b)};function md5_GG(a,b,c,d,x,s,ac){a=md5_AddUnsigned(a,md5_AddUnsigned(md5_AddUnsigned(md5_G(b,c,d),x),ac));return md5_AddUnsigned(md5_RotateLeft(a,s),b)};function md5_HH(a,b,c,d,x,s,ac){a=md5_AddUnsigned(a,md5_AddUnsigned(md5_AddUnsigned(md5_H(b,c,d),x),ac));return md5_AddUnsigned(md5_RotateLeft(a,s),b)};function md5_II(a,b,c,d,x,s,ac){a=md5_AddUnsigned(a,md5_AddUnsigned(md5_AddUnsigned(md5_I(b,c,d),x),ac));return md5_AddUnsigned(md5_RotateLeft(a,s),b)};function md5_ConvertToWordArray(str){var lWordCount;var lMessageLength=str.length;var lNumberOfWords_temp1=lMessageLength+8;var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1%64))/64;var lNumberOfWords=(lNumberOfWords_temp2+1)*16;var lWordArray=Array(lNumberOfWords-1);var lBytePosition=0;var lByteCount=0;while(lByteCount<lMessageLength){lWordCount=(lByteCount-(lByteCount%4))/4;lBytePosition=(lByteCount%4)*8;lWordArray[lWordCount]=(lWordArray[lWordCount]|(str.charCodeAt(lByteCount)<<lBytePosition));lByteCount++}lWordCount=(lByteCount-(lByteCount%4))/4;lBytePosition=(lByteCount%4)*8;lWordArray[lWordCount]=lWordArray[lWordCount]|(0x80<<lBytePosition);lWordArray[lNumberOfWords-2]=lMessageLength<<3;lWordArray[lNumberOfWords-1]=lMessageLength>>>29;return lWordArray};function md5_WordToHex(lValue){var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;for(lCount=0;lCount<=3;lCount++){lByte=(lValue>>>(lCount*8))&255;WordToHexValue_temp="0"+lByte.toString(16);WordToHexValue=WordToHexValue+WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2)}return WordToHexValue};function md5_Utf8Encode(str){str=str.replace(/\r\n/g,"\n");var utftext="";for(var n=0;n<str.length;n++){var c=str.charCodeAt(n);if(c<128){utftext+=String.fromCharCode(c)}else if((c>127)&&(c<2048)){utftext+=String.fromCharCode((c>>6)|192);utftext+=String.fromCharCode((c&63)|128)}else{utftext+=String.fromCharCode((c>>12)|224);utftext+=String.fromCharCode(((c>>6)&63)|128);utftext+=String.fromCharCode((c&63)|128)}}return utftext};var x=Array();var k,AA,BB,CC,DD,a,b,c,d;var S11=7,S12=12,S13=17,S14=22;var S21=5,S22=9,S23=14,S24=20;var S31=4,S32=11,S33=16,S34=23;var S41=6,S42=10,S43=15,S44=21;str=md5_Utf8Encode(str);x=md5_ConvertToWordArray(str);a=0x67452301;b=0xEFCDAB89;c=0x98BADCFE;d=0x10325476;for(k=0;k<x.length;k+=16){AA=a;BB=b;CC=c;DD=d;a=md5_FF(a,b,c,d,x[k+0],S11,0xD76AA478);d=md5_FF(d,a,b,c,x[k+1],S12,0xE8C7B756);c=md5_FF(c,d,a,b,x[k+2],S13,0x242070DB);b=md5_FF(b,c,d,a,x[k+3],S14,0xC1BDCEEE);a=md5_FF(a,b,c,d,x[k+4],S11,0xF57C0FAF);d=md5_FF(d,a,b,c,x[k+5],S12,0x4787C62A);c=md5_FF(c,d,a,b,x[k+6],S13,0xA8304613);b=md5_FF(b,c,d,a,x[k+7],S14,0xFD469501);a=md5_FF(a,b,c,d,x[k+8],S11,0x698098D8);d=md5_FF(d,a,b,c,x[k+9],S12,0x8B44F7AF);c=md5_FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);b=md5_FF(b,c,d,a,x[k+11],S14,0x895CD7BE);a=md5_FF(a,b,c,d,x[k+12],S11,0x6B901122);d=md5_FF(d,a,b,c,x[k+13],S12,0xFD987193);c=md5_FF(c,d,a,b,x[k+14],S13,0xA679438E);b=md5_FF(b,c,d,a,x[k+15],S14,0x49B40821);a=md5_GG(a,b,c,d,x[k+1],S21,0xF61E2562);d=md5_GG(d,a,b,c,x[k+6],S22,0xC040B340);c=md5_GG(c,d,a,b,x[k+11],S23,0x265E5A51);b=md5_GG(b,c,d,a,x[k+0],S24,0xE9B6C7AA);a=md5_GG(a,b,c,d,x[k+5],S21,0xD62F105D);d=md5_GG(d,a,b,c,x[k+10],S22,0x2441453);c=md5_GG(c,d,a,b,x[k+15],S23,0xD8A1E681);b=md5_GG(b,c,d,a,x[k+4],S24,0xE7D3FBC8);a=md5_GG(a,b,c,d,x[k+9],S21,0x21E1CDE6);d=md5_GG(d,a,b,c,x[k+14],S22,0xC33707D6);c=md5_GG(c,d,a,b,x[k+3],S23,0xF4D50D87);b=md5_GG(b,c,d,a,x[k+8],S24,0x455A14ED);a=md5_GG(a,b,c,d,x[k+13],S21,0xA9E3E905);d=md5_GG(d,a,b,c,x[k+2],S22,0xFCEFA3F8);c=md5_GG(c,d,a,b,x[k+7],S23,0x676F02D9);b=md5_GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);a=md5_HH(a,b,c,d,x[k+5],S31,0xFFFA3942);d=md5_HH(d,a,b,c,x[k+8],S32,0x8771F681);c=md5_HH(c,d,a,b,x[k+11],S33,0x6D9D6122);b=md5_HH(b,c,d,a,x[k+14],S34,0xFDE5380C);a=md5_HH(a,b,c,d,x[k+1],S31,0xA4BEEA44);d=md5_HH(d,a,b,c,x[k+4],S32,0x4BDECFA9);c=md5_HH(c,d,a,b,x[k+7],S33,0xF6BB4B60);b=md5_HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);a=md5_HH(a,b,c,d,x[k+13],S31,0x289B7EC6);d=md5_HH(d,a,b,c,x[k+0],S32,0xEAA127FA);c=md5_HH(c,d,a,b,x[k+3],S33,0xD4EF3085);b=md5_HH(b,c,d,a,x[k+6],S34,0x4881D05);a=md5_HH(a,b,c,d,x[k+9],S31,0xD9D4D039);d=md5_HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);c=md5_HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);b=md5_HH(b,c,d,a,x[k+2],S34,0xC4AC5665);a=md5_II(a,b,c,d,x[k+0],S41,0xF4292244);d=md5_II(d,a,b,c,x[k+7],S42,0x432AFF97);c=md5_II(c,d,a,b,x[k+14],S43,0xAB9423A7);b=md5_II(b,c,d,a,x[k+5],S44,0xFC93A039);a=md5_II(a,b,c,d,x[k+12],S41,0x655B59C3);d=md5_II(d,a,b,c,x[k+3],S42,0x8F0CCC92);c=md5_II(c,d,a,b,x[k+10],S43,0xFFEFF47D);b=md5_II(b,c,d,a,x[k+1],S44,0x85845DD1);a=md5_II(a,b,c,d,x[k+8],S41,0x6FA87E4F);d=md5_II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);c=md5_II(c,d,a,b,x[k+6],S43,0xA3014314);b=md5_II(b,c,d,a,x[k+13],S44,0x4E0811A1);a=md5_II(a,b,c,d,x[k+4],S41,0xF7537E82);d=md5_II(d,a,b,c,x[k+11],S42,0xBD3AF235);c=md5_II(c,d,a,b,x[k+2],S43,0x2AD7D2BB);b=md5_II(b,c,d,a,x[k+9],S44,0xEB86D391);a=md5_AddUnsigned(a,AA);b=md5_AddUnsigned(b,BB);c=md5_AddUnsigned(c,CC);d=md5_AddUnsigned(d,DD)}return(md5_WordToHex(a)+md5_WordToHex(b)+md5_WordToHex(c)+md5_WordToHex(d)).toLowerCase()}

/**
 * 计算字符串的sha256散列值
 *
 * @param string str 字符串
 * @return string 字符串的sha256散列值
 */
function sha256(str){var chrsz=8;var hexcase=0;function safe_add(x,y){var lsw=(x&0xFFFF)+(y&0xFFFF);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&0xFFFF)}function S(X,n){return(X>>>n)|(X<<(32-n))}function R(X,n){return(X>>>n)}function Ch(x,y,z){return((x&y)^((~x)&z))}function Maj(x,y,z){return((x&y)^(x&z)^(y&z))}function Sigma0256(x){return(S(x,2)^S(x,13)^S(x,22))}function Sigma1256(x){return(S(x,6)^S(x,11)^S(x,25))}function Gamma0256(x){return(S(x,7)^S(x,18)^R(x,3))}function Gamma1256(x){return(S(x,17)^S(x,19)^R(x,10))}function core_sha256(m,l){var K=new Array(0x428A2F98,0x71374491,0xB5C0FBCF,0xE9B5DBA5,0x3956C25B,0x59F111F1,0x923F82A4,0xAB1C5ED5,0xD807AA98,0x12835B01,0x243185BE,0x550C7DC3,0x72BE5D74,0x80DEB1FE,0x9BDC06A7,0xC19BF174,0xE49B69C1,0xEFBE4786,0xFC19DC6,0x240CA1CC,0x2DE92C6F,0x4A7484AA,0x5CB0A9DC,0x76F988DA,0x983E5152,0xA831C66D,0xB00327C8,0xBF597FC7,0xC6E00BF3,0xD5A79147,0x6CA6351,0x14292967,0x27B70A85,0x2E1B2138,0x4D2C6DFC,0x53380D13,0x650A7354,0x766A0ABB,0x81C2C92E,0x92722C85,0xA2BFE8A1,0xA81A664B,0xC24B8B70,0xC76C51A3,0xD192E819,0xD6990624,0xF40E3585,0x106AA070,0x19A4C116,0x1E376C08,0x2748774C,0x34B0BCB5,0x391C0CB3,0x4ED8AA4A,0x5B9CCA4F,0x682E6FF3,0x748F82EE,0x78A5636F,0x84C87814,0x8CC70208,0x90BEFFFA,0xA4506CEB,0xBEF9A3F7,0xC67178F2);var HASH=new Array(0x6A09E667,0xBB67AE85,0x3C6EF372,0xA54FF53A,0x510E527F,0x9B05688C,0x1F83D9AB,0x5BE0CD19);var W=new Array(64);var a,b,c,d,e,f,g,h,i,j;var T1,T2;m[l>>5]|=0x80<<(24-l%32);m[((l+64>>9)<<4)+15]=l;for(var i=0;i<m.length;i+=16){a=HASH[0];b=HASH[1];c=HASH[2];d=HASH[3];e=HASH[4];f=HASH[5];g=HASH[6];h=HASH[7];for(var j=0;j<64;j++){if(j<16)W[j]=m[j+i];else W[j]=safe_add(safe_add(safe_add(Gamma1256(W[j-2]),W[j-7]),Gamma0256(W[j-15])),W[j-16]);T1=safe_add(safe_add(safe_add(safe_add(h,Sigma1256(e)),Ch(e,f,g)),K[j]),W[j]);T2=safe_add(Sigma0256(a),Maj(a,b,c));h=g;g=f;f=e;e=safe_add(d,T1);d=c;c=b;b=a;a=safe_add(T1,T2)}HASH[0]=safe_add(a,HASH[0]);HASH[1]=safe_add(b,HASH[1]);HASH[2]=safe_add(c,HASH[2]);HASH[3]=safe_add(d,HASH[3]);HASH[4]=safe_add(e,HASH[4]);HASH[5]=safe_add(f,HASH[5]);HASH[6]=safe_add(g,HASH[6]);HASH[7]=safe_add(h,HASH[7])}return HASH}function str2binb(str){var bin=Array();var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz){bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(24-i%32)}return bin}function Utf8Encode(string){string=string.replace(/\r\n/g,"\n");var utftext="";for(var n=0;n<string.length;n++){var c=string.charCodeAt(n);if(c<128){utftext+=String.fromCharCode(c)}else if((c>127)&&(c<2048)){utftext+=String.fromCharCode((c>>6)|192);utftext+=String.fromCharCode((c&63)|128)}else{utftext+=String.fromCharCode((c>>12)|224);utftext+=String.fromCharCode(((c>>6)&63)|128);utftext+=String.fromCharCode((c&63)|128)}}return utftext}function binb2hex(binarray){var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var str="";for(var i=0;i<binarray.length*4;i++){str+=hex_tab.charAt((binarray[i>>2]>>((3-i%4)*8+4))&0xF)+hex_tab.charAt((binarray[i>>2]>>((3-i%4)*8))&0xF)}return str}str=Utf8Encode(str);return binb2hex(core_sha256(str2binb(str),str.length*chrsz))}

/**
 * 计算字符串的sha512散列值
 *
 * @param string str 字符串
 * @return string 字符串的sha512散列值
 */
function sha512(str){function int64(msint_32,lsint_32){this.highOrder=msint_32;this.lowOrder=lsint_32}var H=[new int64(1779033703,4089235720),new int64(3144134277,2227873595),new int64(1013904242,4271175723),new int64(2773480762,1595750129),new int64(1359893119,2917565137),new int64(2600822924,725511199),new int64(528734635,4215389547),new int64(1541459225,327033209)];var K=[new int64(1116352408,3609767458),new int64(1899447441,602891725),new int64(3049323471,3964484399),new int64(3921009573,2173295548),new int64(961987163,4081628472),new int64(1508970993,3053834265),new int64(2453635748,2937671579),new int64(2870763221,3664609560),new int64(3624381080,2734883394),new int64(310598401,1164996542),new int64(607225278,1323610764),new int64(1426881987,3590304994),new int64(1925078388,4068182383),new int64(2162078206,991336113),new int64(2614888103,633803317),new int64(3248222580,3479774868),new int64(3835390401,2666613458),new int64(4022224774,944711139),new int64(264347078,2341262773),new int64(604807628,2007800933),new int64(770255983,1495990901),new int64(1249150122,1856431235),new int64(1555081692,3175218132),new int64(1996064986,2198950837),new int64(2554220882,3999719339),new int64(2821834349,766784016),new int64(2952996808,2566594879),new int64(3210313671,3203337956),new int64(3336571891,1034457026),new int64(3584528711,2466948901),new int64(113926993,3758326383),new int64(338241895,168717936),new int64(666307205,1188179964),new int64(773529912,1546045734),new int64(1294757372,1522805485),new int64(1396182291,2643833823),new int64(1695183700,2343527390),new int64(1986661051,1014477480),new int64(2177026350,1206759142),new int64(2456956037,344077627),new int64(2730485921,1290863460),new int64(2820302411,3158454273),new int64(3259730800,3505952657),new int64(3345764771,106217008),new int64(3516065817,3606008344),new int64(3600352804,1432725776),new int64(4094571909,1467031594),new int64(275423344,851169720),new int64(430227734,3100823752),new int64(506948616,1363258195),new int64(659060556,3750685593),new int64(883997877,3785050280),new int64(958139571,3318307427),new int64(1322822218,3812723403),new int64(1537002063,2003034995),new int64(1747873779,3602036899),new int64(1955562222,1575990012),new int64(2024104815,1125592928),new int64(2227730452,2716904306),new int64(2361852424,442776044),new int64(2428436474,593698344),new int64(2756734187,3733110249),new int64(3204031479,2999351573),new int64(3329325298,3815920427),new int64(3391569614,3928383900),new int64(3515267271,566280711),new int64(3940187606,3454069534),new int64(4118630271,4000239992),new int64(116418474,1914138554),new int64(174292421,2731055270),new int64(289380356,3203993006),new int64(460393269,320620315),new int64(685471733,587496836),new int64(852142971,1086792851),new int64(1017036298,365543100),new int64(1126000580,2618297676),new int64(1288033470,3409855158),new int64(1501505948,4234509866),new int64(1607167915,987167468),new int64(1816402316,1246189591)];var W=new Array(64);var a,b,c,d,e,f,g,h,i,j;var T1,T2;var charsize=8;function utf8_encode(str){return unescape(encodeURIComponent(str))}function str2binb(str){var bin=[];var mask=(1<<charsize)-1;var len=str.length*charsize;for(var i=0;i<len;i+=charsize){bin[i>>5]|=(str.charCodeAt(i/charsize)&mask)<<(32-charsize-(i%32))}return bin}function binb2hex(binarray){var hex_tab="0123456789abcdef";var str="";var length=binarray.length*4;var srcByte;for(var i=0;i<length;i+=1){srcByte=binarray[i>>2]>>((3-(i%4))*8);str+=hex_tab.charAt((srcByte>>4)&15)+hex_tab.charAt(srcByte&15)}return str}function safe_add_2(x,y){var lsw,msw,lowOrder,highOrder;lsw=(x.lowOrder&65535)+(y.lowOrder&65535);msw=(x.lowOrder>>>16)+(y.lowOrder>>>16)+(lsw>>>16);lowOrder=((msw&65535)<<16)|(lsw&65535);lsw=(x.highOrder&65535)+(y.highOrder&65535)+(msw>>>16);msw=(x.highOrder>>>16)+(y.highOrder>>>16)+(lsw>>>16);highOrder=((msw&65535)<<16)|(lsw&65535);return new int64(highOrder,lowOrder)}function safe_add_4(a,b,c,d){var lsw,msw,lowOrder,highOrder;lsw=(a.lowOrder&65535)+(b.lowOrder&65535)+(c.lowOrder&65535)+(d.lowOrder&65535);msw=(a.lowOrder>>>16)+(b.lowOrder>>>16)+(c.lowOrder>>>16)+(d.lowOrder>>>16)+(lsw>>>16);lowOrder=((msw&65535)<<16)|(lsw&65535);lsw=(a.highOrder&65535)+(b.highOrder&65535)+(c.highOrder&65535)+(d.highOrder&65535)+(msw>>>16);msw=(a.highOrder>>>16)+(b.highOrder>>>16)+(c.highOrder>>>16)+(d.highOrder>>>16)+(lsw>>>16);highOrder=((msw&65535)<<16)|(lsw&65535);return new int64(highOrder,lowOrder)}function safe_add_5(a,b,c,d,e){var lsw,msw,lowOrder,highOrder;lsw=(a.lowOrder&65535)+(b.lowOrder&65535)+(c.lowOrder&65535)+(d.lowOrder&65535)+(e.lowOrder&65535);msw=(a.lowOrder>>>16)+(b.lowOrder>>>16)+(c.lowOrder>>>16)+(d.lowOrder>>>16)+(e.lowOrder>>>16)+(lsw>>>16);lowOrder=((msw&65535)<<16)|(lsw&65535);lsw=(a.highOrder&65535)+(b.highOrder&65535)+(c.highOrder&65535)+(d.highOrder&65535)+(e.highOrder&65535)+(msw>>>16);msw=(a.highOrder>>>16)+(b.highOrder>>>16)+(c.highOrder>>>16)+(d.highOrder>>>16)+(e.highOrder>>>16)+(lsw>>>16);highOrder=((msw&65535)<<16)|(lsw&65535);return new int64(highOrder,lowOrder)}function maj(x,y,z){return new int64((x.highOrder&y.highOrder)^(x.highOrder&z.highOrder)^(y.highOrder&z.highOrder),(x.lowOrder&y.lowOrder)^(x.lowOrder&z.lowOrder)^(y.lowOrder&z.lowOrder))}function ch(x,y,z){return new int64((x.highOrder&y.highOrder)^(~x.highOrder&z.highOrder),(x.lowOrder&y.lowOrder)^(~x.lowOrder&z.lowOrder))}function rotr(x,n){if(n<=32){return new int64((x.highOrder>>>n)|(x.lowOrder<<(32-n)),(x.lowOrder>>>n)|(x.highOrder<<(32-n)))}else{return new int64((x.lowOrder>>>n)|(x.highOrder<<(32-n)),(x.highOrder>>>n)|(x.lowOrder<<(32-n)))}}function sigma0(x){var rotr28=rotr(x,28);var rotr34=rotr(x,34);var rotr39=rotr(x,39);return new int64(rotr28.highOrder^rotr34.highOrder^rotr39.highOrder,rotr28.lowOrder^rotr34.lowOrder^rotr39.lowOrder)}function sigma1(x){var rotr14=rotr(x,14);var rotr18=rotr(x,18);var rotr41=rotr(x,41);return new int64(rotr14.highOrder^rotr18.highOrder^rotr41.highOrder,rotr14.lowOrder^rotr18.lowOrder^rotr41.lowOrder)}function gamma0(x){var rotr1=rotr(x,1),rotr8=rotr(x,8),shr7=shr(x,7);return new int64(rotr1.highOrder^rotr8.highOrder^shr7.highOrder,rotr1.lowOrder^rotr8.lowOrder^shr7.lowOrder)}function gamma1(x){var rotr19=rotr(x,19);var rotr61=rotr(x,61);var shr6=shr(x,6);return new int64(rotr19.highOrder^rotr61.highOrder^shr6.highOrder,rotr19.lowOrder^rotr61.lowOrder^shr6.lowOrder)}function shr(x,n){if(n<=32){return new int64(x.highOrder>>>n,x.lowOrder>>>n|(x.highOrder<<(32-n)))}else{return new int64(0,x.highOrder<<(32-n))}}str=utf8_encode(str);strlen=str.length*charsize;str=str2binb(str);str[strlen>>5]|=128<<(24-strlen%32);str[(((strlen+128)>>10)<<5)+31]=strlen;for(var i=0;i<str.length;i+=32){a=H[0];b=H[1];c=H[2];d=H[3];e=H[4];f=H[5];g=H[6];h=H[7];for(var j=0;j<80;j++){if(j<16){W[j]=new int64(str[j*2+i],str[j*2+i+1])}else{W[j]=safe_add_4(gamma1(W[j-2]),W[j-7],gamma0(W[j-15]),W[j-16])}T1=safe_add_5(h,sigma1(e),ch(e,f,g),K[j],W[j]);T2=safe_add_2(sigma0(a),maj(a,b,c));h=g;g=f;f=e;e=safe_add_2(d,T1);d=c;c=b;b=a;a=safe_add_2(T1,T2)}H[0]=safe_add_2(a,H[0]);H[1]=safe_add_2(b,H[1]);H[2]=safe_add_2(c,H[2]);H[3]=safe_add_2(d,H[3]);H[4]=safe_add_2(e,H[4]);H[5]=safe_add_2(f,H[5]);H[6]=safe_add_2(g,H[6]);H[7]=safe_add_2(h,H[7])}var binarray=[];for(var i=0;i<H.length;i++){binarray.push(H[i].highOrder);binarray.push(H[i].lowOrder)}return binb2hex(binarray)}

var password = 'manong';

console.log("md5('" + password + "')     <===>  " + md5(password));
console.log("sha256('" + password + "')  <===>  " + sha256(password));
console.log("sha512('" + password + "')  <===>  " + sha512(password));

Copyright © 2024 码农人生. All Rights Reserved