Improve performance.

pull/1/head v0.2.2
Chen Yi-Cyuan 11 years ago
parent 213f2972f7
commit ea761fa387

@ -1,3 +1,7 @@
# v0.2.2 / 2015-02-09
* Improve performance.
# v0.2.1 / 2015-02-08
* Remove ascii parameter.

@ -89,6 +89,10 @@ Output
b6dab29c16ec35ab34a5d92ff135b58de96741dda78b1009a2181cf8b45d2f72
0f46a0ae7f226517dd66ece0ce1efa29ffb7ced05ac4566fdcaed188
## Benchmark
[UTF8](http://jsperf.com/sha-512/10)
[ASCII](http://jsperf.com/sha-512/9)
## Extensions
### jQuery
If you prefer jQuery style, you can add following code to add a jQuery extension.

@ -1,6 +1,6 @@
{
"name": "js-sha512",
"version": "0.2.1",
"version": "0.2.2",
"main": ["build/sha512.min.js"],
"ignore": [
"samples",

@ -1,16 +1,22 @@
(function(E,pa){var ja="undefined"!=typeof module;ja&&(E=global);var a="0123456789abcdef".split(""),oa=[-2147483648,8388608,32768,128],O=[24,16,8,0],ka=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,
(function(K,sa){var ka="undefined"!=typeof module;ka&&(K=global);var a="0123456789abcdef".split(""),ra=[-2147483648,8388608,32768,128],ea=[24,16,8,0],da=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,
2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,
2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,
3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],b=[],K=function(a,b){return N(a,512,b)},la=function(a,b){return N(a,384,b)},ma=function(a,b){return N(a,256,b)},na=function(a,b){return N(a,224,b)},
N=function(J,E,K){var m,n,p,q,r,t,u,v,w,x,y,z,A,B,C,D,l;K=!1;var c,P=0,N=0,ea=0,fa=J.length,Q,R,g,d,f,e,ga,ha,h,k,L,M,ia;512==E?(m=1779033703,n=4089235720,p=3144134277,q=2227873595,r=1013904242,t=4271175723,u=2773480762,v=1595750129,w=1359893119,x=2917565137,y=2600822924,z=725511199,A=528734635,B=4215389547,C=1541459225,D=327033209):384==E?(m=3418070365,n=3238371032,p=1654270250,q=914150663,r=2438529370,t=812702999,u=355462360,v=4144912697,w=1731405415,x=4290775857,y=2394180231,z=1750603025,A=3675008525,
B=1694076839,C=1203062813,D=3204075428):256==E?(m=573645204,n=4230739756,p=2673172387,q=3360449730,r=596883563,t=1867755857,u=2520282905,v=1497426621,w=2519219938,x=2827943907,y=3193839141,z=1401305490,A=721525244,B=746961066,C=246885852,D=2177182882):224==E&&(m=2352822216,n=424955298,p=1944164710,q=2312950998,r=502970286,t=855612546,u=1738396948,v=1479516111,w=258812777,x=2077511080,y=2011393907,z=79989058,A=1067287976,B=1780299464,C=286451373,D=2446758561);l=0;do{b[0]=l;b[1]=b[2]=b[3]=b[4]=b[5]=
b[6]=b[7]=b[8]=b[9]=b[10]=b[11]=b[12]=b[13]=b[14]=b[15]=b[16]=b[17]=b[18]=b[19]=b[20]=b[21]=b[22]=b[23]=b[24]=b[25]=b[26]=b[27]=b[28]=b[29]=b[30]=b[31]=b[32]=0;for(c=N;P<fa&&128>c;++P)l=J.charCodeAt(P),128>l?b[c>>2]|=l<<O[c++&3]:(2048>l?b[c>>2]|=(192|l>>6)<<O[c++&3]:(55296>l||57344<=l?b[c>>2]|=(224|l>>12)<<O[c++&3]:(l=65536+((l&1023)<<10|J.charCodeAt(++P)&1023),b[c>>2]|=(240|l>>18)<<O[c++&3],b[c>>2]|=(128|l>>12&63)<<O[c++&3]),b[c>>2]|=(128|l>>6&63)<<O[c++&3]),b[c>>2]|=(128|l&63)<<O[c++&3]);ea+=c-
N;N=c-128;P==fa&&(b[c>>2]|=oa[c&3],++P);l=b[32];P>fa&&112>c&&(b[31]=ea<<3,K=!0);for(c=32;160>c;c+=2)h=b[c-30],k=b[c-29],Q=(h>>>1|k<<31)^(h>>>8|k<<24)^h>>>7,R=(k>>>1|h<<31)^(k>>>8|h<<24)^(k>>>7|h<<25),h=b[c-4],k=b[c-3],g=(h>>>19|k<<13)^(k>>>29|h<<3)^h>>>6,d=(k>>>19|h<<13)^(h>>>29|k<<3)^(k>>>6|h<<26),h=b[c-32],k=b[c-31],L=b[c-14],M=b[c-13],f=(M&65535)+(k&65535)+(R&65535)+(d&65535),d=(M>>>16)+(k>>>16)+(R>>>16)+(d>>>16)+(f>>>16),e=(L&65535)+(h&65535)+(Q&65535)+(g&65535)+(d>>>16),g=(L>>>16)+(h>>>16)+(Q>>>
16)+(g>>>16)+(e>>>16),b[c]=g<<16|e&65535,b[c+1]=d<<16|f&65535;var F=m,G=n,S=p,T=q,U=r,V=t,W=u,X=v,H=w,I=x,Y=y,Z=z,aa=A,ba=B,ca=C,da=D;for(c=0;160>c;c+=2)Q=(F>>>28|G<<4)^(G>>>2|F<<30)^(G>>>7|F<<25),R=(G>>>28|F<<4)^(F>>>2|G<<30)^(F>>>7|G<<25),g=(H>>>14|I<<18)^(H>>>18|I<<14)^(I>>>9|H<<23),d=(I>>>14|H<<18)^(I>>>18|H<<14)^(H>>>9|I<<23),ga=F&S^F&U^S&U,ha=G&T^G&V^T&V,ia=H&Y^~H&aa,e=I&Z^~I&ba,h=b[c],k=b[c+1],L=ka[c],M=ka[c+1],f=(M&65535)+(k&65535)+(e&65535)+(d&65535)+(da&65535),d=(M>>>16)+(k>>>16)+(e>>>16)+
(d>>>16)+(da>>>16)+(f>>>16),e=(L&65535)+(h&65535)+(ia&65535)+(g&65535)+(ca&65535)+(d>>>16),g=(L>>>16)+(h>>>16)+(ia>>>16)+(g>>>16)+(ca>>>16)+(e>>>16),h=g<<16|e&65535,k=d<<16|f&65535,f=(ha&65535)+(R&65535),d=(ha>>>16)+(R>>>16)+(f>>>16),e=(ga&65535)+(Q&65535)+(d>>>16),g=(ga>>>16)+(Q>>>16)+(e>>>16),L=g<<16|e&65535,M=d<<16|f&65535,ca=aa,da=ba,aa=Y,ba=Z,Y=H,Z=I,f=(X&65535)+(k&65535),d=(X>>>16)+(k>>>16)+(f>>>16),e=(W&65535)+(h&65535)+(d>>>16),g=(W>>>16)+(h>>>16)+(e>>>16),H=g<<16|e&65535,I=d<<16|f&65535,
W=U,X=V,U=S,V=T,S=F,T=G,f=(M&65535)+(k&65535),d=(M>>>16)+(k>>>16)+(f>>>16),e=(L&65535)+(h&65535)+(d>>>16),g=(L>>>16)+(h>>>16)+(e>>>16),F=g<<16|e&65535,G=d<<16|f&65535;f=(n&65535)+(G&65535);d=(n>>>16)+(G>>>16)+(f>>>16);e=(m&65535)+(F&65535)+(d>>>16);g=(m>>>16)+(F>>>16)+(e>>>16);m=g<<16|e&65535;n=d<<16|f&65535;f=(q&65535)+(T&65535);d=(q>>>16)+(T>>>16)+(f>>>16);e=(p&65535)+(S&65535)+(d>>>16);g=(p>>>16)+(S>>>16)+(e>>>16);p=g<<16|e&65535;q=d<<16|f&65535;f=(t&65535)+(V&65535);d=(t>>>16)+(V>>>16)+(f>>>16);
e=(r&65535)+(U&65535)+(d>>>16);g=(r>>>16)+(U>>>16)+(e>>>16);r=g<<16|e&65535;t=d<<16|f&65535;f=(v&65535)+(X&65535);d=(v>>>16)+(X>>>16)+(f>>>16);e=(u&65535)+(W&65535)+(d>>>16);g=(u>>>16)+(W>>>16)+(e>>>16);u=g<<16|e&65535;v=d<<16|f&65535;f=(x&65535)+(I&65535);d=(x>>>16)+(I>>>16)+(f>>>16);e=(w&65535)+(H&65535)+(d>>>16);g=(w>>>16)+(H>>>16)+(e>>>16);w=g<<16|e&65535;x=d<<16|f&65535;f=(z&65535)+(Z&65535);d=(z>>>16)+(Z>>>16)+(f>>>16);e=(y&65535)+(Y&65535)+(d>>>16);g=(y>>>16)+(Y>>>16)+(e>>>16);y=g<<16|e&65535;
z=d<<16|f&65535;f=(B&65535)+(ba&65535);d=(B>>>16)+(ba>>>16)+(f>>>16);e=(A&65535)+(aa&65535)+(d>>>16);g=(A>>>16)+(aa>>>16)+(e>>>16);A=g<<16|e&65535;B=d<<16|f&65535;f=(D&65535)+(da&65535);d=(D>>>16)+(da>>>16)+(f>>>16);e=(C&65535)+(ca&65535)+(d>>>16);g=(C>>>16)+(ca>>>16)+(e>>>16);C=g<<16|e&65535;D=d<<16|f&65535}while(!K);J=a[m>>28&15]+a[m>>24&15]+a[m>>20&15]+a[m>>16&15]+a[m>>12&15]+a[m>>8&15]+a[m>>4&15]+a[m&15]+a[n>>28&15]+a[n>>24&15]+a[n>>20&15]+a[n>>16&15]+a[n>>12&15]+a[n>>8&15]+a[n>>4&15]+a[n&15]+
a[p>>28&15]+a[p>>24&15]+a[p>>20&15]+a[p>>16&15]+a[p>>12&15]+a[p>>8&15]+a[p>>4&15]+a[p&15]+a[q>>28&15]+a[q>>24&15]+a[q>>20&15]+a[q>>16&15]+a[q>>12&15]+a[q>>8&15]+a[q>>4&15]+a[q&15]+a[r>>28&15]+a[r>>24&15]+a[r>>20&15]+a[r>>16&15]+a[r>>12&15]+a[r>>8&15]+a[r>>4&15]+a[r&15]+a[t>>28&15]+a[t>>24&15]+a[t>>20&15]+a[t>>16&15]+a[t>>12&15]+a[t>>8&15]+a[t>>4&15]+a[t&15]+a[u>>28&15]+a[u>>24&15]+a[u>>20&15]+a[u>>16&15]+a[u>>12&15]+a[u>>8&15]+a[u>>4&15]+a[u&15]+a[v>>28&15]+a[v>>24&15]+a[v>>20&15]+a[v>>16&15]+a[v>>
12&15]+a[v>>8&15]+a[v>>4&15]+a[v&15];if(224==E)return J.substr(0,J.length-8);384<=E&&(J+=a[w>>28&15]+a[w>>24&15]+a[w>>20&15]+a[w>>16&15]+a[w>>12&15]+a[w>>8&15]+a[w>>4&15]+a[w&15]+a[x>>28&15]+a[x>>24&15]+a[x>>20&15]+a[x>>16&15]+a[x>>12&15]+a[x>>8&15]+a[x>>4&15]+a[x&15]+a[y>>28&15]+a[y>>24&15]+a[y>>20&15]+a[y>>16&15]+a[y>>12&15]+a[y>>8&15]+a[y>>4&15]+a[y&15]+a[z>>28&15]+a[z>>24&15]+a[z>>20&15]+a[z>>16&15]+a[z>>12&15]+a[z>>8&15]+a[z>>4&15]+a[z&15]);512==E&&(J+=a[A>>28&15]+a[A>>24&15]+a[A>>20&15]+a[A>>
16&15]+a[A>>12&15]+a[A>>8&15]+a[A>>4&15]+a[A&15]+a[B>>28&15]+a[B>>24&15]+a[B>>20&15]+a[B>>16&15]+a[B>>12&15]+a[B>>8&15]+a[B>>4&15]+a[B&15]+a[C>>28&15]+a[C>>24&15]+a[C>>20&15]+a[C>>16&15]+a[C>>12&15]+a[C>>8&15]+a[C>>4&15]+a[C&15]+a[D>>28&15]+a[D>>24&15]+a[D>>20&15]+a[D>>16&15]+a[D>>12&15]+a[D>>8&15]+a[D>>4&15]+a[D&15]);return J};!E.JS_SHA512_TEST&&ja?(K.sha512=K,K.sha384=la,K.sha512_256=ma,K.sha512_224=na,module.exports=K):E&&(E.sha512=K,E.sha384=la,E.sha512_256=ma,E.sha512_224=na)})(this);
3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],e=[],oa=function(a){return Z(a,384)},pa=function(a){return Z(a,256)},qa=function(a){return Z(a,224)},Z=function(Z,K){var n,q,r,t,u,v,w,x,y,z,A,B,C,D,
E,F,p,ka=!1,g,fa=0,la=0,ma=0,na=Z.length,L,M,f,b,d,c,ia,ja,ga,ha,aa,ba,h,k,l,m,ca;384==K?(n=3418070365,q=3238371032,r=1654270250,t=914150663,u=2438529370,v=812702999,w=355462360,x=4144912697,y=1731405415,z=4290775857,A=2394180231,B=1750603025,C=3675008525,D=1694076839,E=1203062813,F=3204075428):256==K?(n=573645204,q=4230739756,r=2673172387,t=3360449730,u=596883563,v=1867755857,w=2520282905,x=1497426621,y=2519219938,z=2827943907,A=3193839141,B=1401305490,C=721525244,D=746961066,E=246885852,F=2177182882):
224==K?(n=2352822216,q=424955298,r=1944164710,t=2312950998,u=502970286,v=855612546,w=1738396948,x=1479516111,y=258812777,z=2077511080,A=2011393907,B=79989058,C=1067287976,D=1780299464,E=286451373,F=2446758561):(n=1779033703,q=4089235720,r=3144134277,t=2227873595,u=1013904242,v=4271175723,w=2773480762,x=1595750129,y=1359893119,z=2917565137,A=2600822924,B=725511199,C=528734635,D=4215389547,E=1541459225,F=327033209,K=512);p=0;do{e[0]=p;e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=e[9]=e[10]=e[11]=e[12]=e[13]=
e[14]=e[15]=e[16]=e[17]=e[18]=e[19]=e[20]=e[21]=e[22]=e[23]=e[24]=e[25]=e[26]=e[27]=e[28]=e[29]=e[30]=e[31]=e[32]=0;for(g=la;fa<na&&128>g;++fa)p=Z.charCodeAt(fa),128>p?e[g>>2]|=p<<ea[g++&3]:(2048>p?e[g>>2]|=(192|p>>6)<<ea[g++&3]:(55296>p||57344<=p?e[g>>2]|=(224|p>>12)<<ea[g++&3]:(p=65536+((p&1023)<<10|Z.charCodeAt(++fa)&1023),e[g>>2]|=(240|p>>18)<<ea[g++&3],e[g>>2]|=(128|p>>12&63)<<ea[g++&3]),e[g>>2]|=(128|p>>6&63)<<ea[g++&3]),e[g>>2]|=(128|p&63)<<ea[g++&3]);ma+=g-la;la=g-128;fa==na&&(e[g>>2]|=ra[g&
3],++fa);p=e[32];fa>na&&112>g&&(e[31]=ma<<3,ka=!0);for(g=32;160>g;g+=2)h=e[g-30],k=e[g-29],L=(h>>>1|k<<31)^(h>>>8|k<<24)^h>>>7,M=(k>>>1|h<<31)^(k>>>8|h<<24)^(k>>>7|h<<25),h=e[g-4],k=e[g-3],f=(h>>>19|k<<13)^(k>>>29|h<<3)^h>>>6,b=(k>>>19|h<<13)^(h>>>29|k<<3)^(k>>>6|h<<26),h=e[g-32],k=e[g-31],l=e[g-14],m=e[g-13],d=(m&65535)+(k&65535)+(M&65535)+(b&65535),b=(m>>>16)+(k>>>16)+(M>>>16)+(b>>>16)+(d>>>16),c=(l&65535)+(h&65535)+(L&65535)+(f&65535)+(b>>>16),f=(l>>>16)+(h>>>16)+(L>>>16)+(f>>>16)+(c>>>16),e[g]=
f<<16|c&65535,e[g+1]=b<<16|d&65535;var N=n,O=q,G=r,H=t,I=u,J=v,P=w,Q=x,R=y,S=z,T=A,U=B,V=C,W=D,X=E,Y=F;ga=G&I;ha=H&J;for(g=0;160>g;g+=8)L=(N>>>28|O<<4)^(O>>>2|N<<30)^(O>>>7|N<<25),M=(O>>>28|N<<4)^(N>>>2|O<<30)^(N>>>7|O<<25),f=(R>>>14|S<<18)^(R>>>18|S<<14)^(S>>>9|R<<23),b=(S>>>14|R<<18)^(S>>>18|R<<14)^(R>>>9|S<<23),ia=N&G,ja=O&H,aa=ia^N&I^ga,ba=ja^O&J^ha,ca=R&T^~R&V,c=S&U^~S&W,h=e[g],k=e[g+1],l=da[g],m=da[g+1],d=(m&65535)+(k&65535)+(c&65535)+(b&65535)+(Y&65535),b=(m>>>16)+(k>>>16)+(c>>>16)+(b>>>16)+
(Y>>>16)+(d>>>16),c=(l&65535)+(h&65535)+(ca&65535)+(f&65535)+(X&65535)+(b>>>16),f=(l>>>16)+(h>>>16)+(ca>>>16)+(f>>>16)+(X>>>16)+(c>>>16),h=f<<16|c&65535,k=b<<16|d&65535,d=(ba&65535)+(M&65535),b=(ba>>>16)+(M>>>16)+(d>>>16),c=(aa&65535)+(L&65535)+(b>>>16),f=(aa>>>16)+(L>>>16)+(c>>>16),l=f<<16|c&65535,m=b<<16|d&65535,d=(Q&65535)+(k&65535),b=(Q>>>16)+(k>>>16)+(d>>>16),c=(P&65535)+(h&65535)+(b>>>16),f=(P>>>16)+(h>>>16)+(c>>>16),X=f<<16|c&65535,Y=b<<16|d&65535,d=(m&65535)+(k&65535),b=(m>>>16)+(k>>>16)+
(d>>>16),c=(l&65535)+(h&65535)+(b>>>16),f=(l>>>16)+(h>>>16)+(c>>>16),P=f<<16|c&65535,Q=b<<16|d&65535,L=(P>>>28|Q<<4)^(Q>>>2|P<<30)^(Q>>>7|P<<25),M=(Q>>>28|P<<4)^(P>>>2|Q<<30)^(P>>>7|Q<<25),f=(X>>>14|Y<<18)^(X>>>18|Y<<14)^(Y>>>9|X<<23),b=(Y>>>14|X<<18)^(Y>>>18|X<<14)^(X>>>9|Y<<23),ga=P&N,ha=Q&O,aa=ga^P&G^ia,ba=ha^Q&H^ja,ca=X&R^~X&T,c=Y&S^~Y&U,h=e[g+2],k=e[g+3],l=da[g+2],m=da[g+3],d=(m&65535)+(k&65535)+(c&65535)+(b&65535)+(W&65535),b=(m>>>16)+(k>>>16)+(c>>>16)+(b>>>16)+(W>>>16)+(d>>>16),c=(l&65535)+
(h&65535)+(ca&65535)+(f&65535)+(V&65535)+(b>>>16),f=(l>>>16)+(h>>>16)+(ca>>>16)+(f>>>16)+(V>>>16)+(c>>>16),h=f<<16|c&65535,k=b<<16|d&65535,d=(ba&65535)+(M&65535),b=(ba>>>16)+(M>>>16)+(d>>>16),c=(aa&65535)+(L&65535)+(b>>>16),f=(aa>>>16)+(L>>>16)+(c>>>16),l=f<<16|c&65535,m=b<<16|d&65535,d=(J&65535)+(k&65535),b=(J>>>16)+(k>>>16)+(d>>>16),c=(I&65535)+(h&65535)+(b>>>16),f=(I>>>16)+(h>>>16)+(c>>>16),V=f<<16|c&65535,W=b<<16|d&65535,d=(m&65535)+(k&65535),b=(m>>>16)+(k>>>16)+(d>>>16),c=(l&65535)+(h&65535)+
(b>>>16),f=(l>>>16)+(h>>>16)+(c>>>16),I=f<<16|c&65535,J=b<<16|d&65535,L=(I>>>28|J<<4)^(J>>>2|I<<30)^(J>>>7|I<<25),M=(J>>>28|I<<4)^(I>>>2|J<<30)^(I>>>7|J<<25),f=(V>>>14|W<<18)^(V>>>18|W<<14)^(W>>>9|V<<23),b=(W>>>14|V<<18)^(W>>>18|V<<14)^(V>>>9|W<<23),ia=I&P,ja=J&Q,aa=ia^I&N^ga,ba=ja^J&O^ha,ca=V&X^~V&R,c=W&Y^~W&S,h=e[g+4],k=e[g+5],l=da[g+4],m=da[g+5],d=(m&65535)+(k&65535)+(c&65535)+(b&65535)+(U&65535),b=(m>>>16)+(k>>>16)+(c>>>16)+(b>>>16)+(U>>>16)+(d>>>16),c=(l&65535)+(h&65535)+(ca&65535)+(f&65535)+
(T&65535)+(b>>>16),f=(l>>>16)+(h>>>16)+(ca>>>16)+(f>>>16)+(T>>>16)+(c>>>16),h=f<<16|c&65535,k=b<<16|d&65535,d=(ba&65535)+(M&65535),b=(ba>>>16)+(M>>>16)+(d>>>16),c=(aa&65535)+(L&65535)+(b>>>16),f=(aa>>>16)+(L>>>16)+(c>>>16),l=f<<16|c&65535,m=b<<16|d&65535,d=(H&65535)+(k&65535),b=(H>>>16)+(k>>>16)+(d>>>16),c=(G&65535)+(h&65535)+(b>>>16),f=(G>>>16)+(h>>>16)+(c>>>16),T=f<<16|c&65535,U=b<<16|d&65535,d=(m&65535)+(k&65535),b=(m>>>16)+(k>>>16)+(d>>>16),c=(l&65535)+(h&65535)+(b>>>16),f=(l>>>16)+(h>>>16)+(c>>>
16),G=f<<16|c&65535,H=b<<16|d&65535,L=(G>>>28|H<<4)^(H>>>2|G<<30)^(H>>>7|G<<25),M=(H>>>28|G<<4)^(G>>>2|H<<30)^(G>>>7|H<<25),f=(T>>>14|U<<18)^(T>>>18|U<<14)^(U>>>9|T<<23),b=(U>>>14|T<<18)^(U>>>18|T<<14)^(T>>>9|U<<23),ga=G&I,ha=H&J,aa=ga^G&P^ia,ba=ha^H&Q^ja,ca=T&V^~T&X,c=U&W^~U&Y,h=e[g+6],k=e[g+7],l=da[g+6],m=da[g+7],d=(m&65535)+(k&65535)+(c&65535)+(b&65535)+(S&65535),b=(m>>>16)+(k>>>16)+(c>>>16)+(b>>>16)+(S>>>16)+(d>>>16),c=(l&65535)+(h&65535)+(ca&65535)+(f&65535)+(R&65535)+(b>>>16),f=(l>>>16)+(h>>>
16)+(ca>>>16)+(f>>>16)+(R>>>16)+(c>>>16),h=f<<16|c&65535,k=b<<16|d&65535,d=(ba&65535)+(M&65535),b=(ba>>>16)+(M>>>16)+(d>>>16),c=(aa&65535)+(L&65535)+(b>>>16),f=(aa>>>16)+(L>>>16)+(c>>>16),l=f<<16|c&65535,m=b<<16|d&65535,d=(O&65535)+(k&65535),b=(O>>>16)+(k>>>16)+(d>>>16),c=(N&65535)+(h&65535)+(b>>>16),f=(N>>>16)+(h>>>16)+(c>>>16),R=f<<16|c&65535,S=b<<16|d&65535,d=(m&65535)+(k&65535),b=(m>>>16)+(k>>>16)+(d>>>16),c=(l&65535)+(h&65535)+(b>>>16),f=(l>>>16)+(h>>>16)+(c>>>16),N=f<<16|c&65535,O=b<<16|d&65535;
d=(q&65535)+(O&65535);b=(q>>>16)+(O>>>16)+(d>>>16);c=(n&65535)+(N&65535)+(b>>>16);f=(n>>>16)+(N>>>16)+(c>>>16);n=f<<16|c&65535;q=b<<16|d&65535;d=(t&65535)+(H&65535);b=(t>>>16)+(H>>>16)+(d>>>16);c=(r&65535)+(G&65535)+(b>>>16);f=(r>>>16)+(G>>>16)+(c>>>16);r=f<<16|c&65535;t=b<<16|d&65535;d=(v&65535)+(J&65535);b=(v>>>16)+(J>>>16)+(d>>>16);c=(u&65535)+(I&65535)+(b>>>16);f=(u>>>16)+(I>>>16)+(c>>>16);u=f<<16|c&65535;v=b<<16|d&65535;d=(x&65535)+(Q&65535);b=(x>>>16)+(Q>>>16)+(d>>>16);c=(w&65535)+(P&65535)+
(b>>>16);f=(w>>>16)+(P>>>16)+(c>>>16);w=f<<16|c&65535;x=b<<16|d&65535;d=(z&65535)+(S&65535);b=(z>>>16)+(S>>>16)+(d>>>16);c=(y&65535)+(R&65535)+(b>>>16);f=(y>>>16)+(R>>>16)+(c>>>16);y=f<<16|c&65535;z=b<<16|d&65535;d=(B&65535)+(U&65535);b=(B>>>16)+(U>>>16)+(d>>>16);c=(A&65535)+(T&65535)+(b>>>16);f=(A>>>16)+(T>>>16)+(c>>>16);A=f<<16|c&65535;B=b<<16|d&65535;d=(D&65535)+(W&65535);b=(D>>>16)+(W>>>16)+(d>>>16);c=(C&65535)+(V&65535)+(b>>>16);f=(C>>>16)+(V>>>16)+(c>>>16);C=f<<16|c&65535;D=b<<16|d&65535;d=
(F&65535)+(Y&65535);b=(F>>>16)+(Y>>>16)+(d>>>16);c=(E&65535)+(X&65535)+(b>>>16);f=(E>>>16)+(X>>>16)+(c>>>16);E=f<<16|c&65535;F=b<<16|d&65535}while(!ka);n=a[n>>28&15]+a[n>>24&15]+a[n>>20&15]+a[n>>16&15]+a[n>>12&15]+a[n>>8&15]+a[n>>4&15]+a[n&15]+a[q>>28&15]+a[q>>24&15]+a[q>>20&15]+a[q>>16&15]+a[q>>12&15]+a[q>>8&15]+a[q>>4&15]+a[q&15]+a[r>>28&15]+a[r>>24&15]+a[r>>20&15]+a[r>>16&15]+a[r>>12&15]+a[r>>8&15]+a[r>>4&15]+a[r&15]+a[t>>28&15]+a[t>>24&15]+a[t>>20&15]+a[t>>16&15]+a[t>>12&15]+a[t>>8&15]+a[t>>4&
15]+a[t&15]+a[u>>28&15]+a[u>>24&15]+a[u>>20&15]+a[u>>16&15]+a[u>>12&15]+a[u>>8&15]+a[u>>4&15]+a[u&15]+a[v>>28&15]+a[v>>24&15]+a[v>>20&15]+a[v>>16&15]+a[v>>12&15]+a[v>>8&15]+a[v>>4&15]+a[v&15]+a[w>>28&15]+a[w>>24&15]+a[w>>20&15]+a[w>>16&15]+a[w>>12&15]+a[w>>8&15]+a[w>>4&15]+a[w&15];256<=K&&(n+=a[x>>28&15]+a[x>>24&15]+a[x>>20&15]+a[x>>16&15]+a[x>>12&15]+a[x>>8&15]+a[x>>4&15]+a[x&15]);384<=K&&(n+=a[y>>28&15]+a[y>>24&15]+a[y>>20&15]+a[y>>16&15]+a[y>>12&15]+a[y>>8&15]+a[y>>4&15]+a[y&15]+a[z>>28&15]+a[z>>
24&15]+a[z>>20&15]+a[z>>16&15]+a[z>>12&15]+a[z>>8&15]+a[z>>4&15]+a[z&15]+a[A>>28&15]+a[A>>24&15]+a[A>>20&15]+a[A>>16&15]+a[A>>12&15]+a[A>>8&15]+a[A>>4&15]+a[A&15]+a[B>>28&15]+a[B>>24&15]+a[B>>20&15]+a[B>>16&15]+a[B>>12&15]+a[B>>8&15]+a[B>>4&15]+a[B&15]);512==K&&(n+=a[C>>28&15]+a[C>>24&15]+a[C>>20&15]+a[C>>16&15]+a[C>>12&15]+a[C>>8&15]+a[C>>4&15]+a[C&15]+a[D>>28&15]+a[D>>24&15]+a[D>>20&15]+a[D>>16&15]+a[D>>12&15]+a[D>>8&15]+a[D>>4&15]+a[D&15]+a[E>>28&15]+a[E>>24&15]+a[E>>20&15]+a[E>>16&15]+a[E>>12&
15]+a[E>>8&15]+a[E>>4&15]+a[E&15]+a[F>>28&15]+a[F>>24&15]+a[F>>20&15]+a[F>>16&15]+a[F>>12&15]+a[F>>8&15]+a[F>>4&15]+a[F&15]);return n};!K.JS_SHA512_TEST&&ka?(Z.sha512=Z,Z.sha384=oa,Z.sha512_256=pa,Z.sha512_224=qa,module.exports=Z):K&&(K.sha512=Z,K.sha384=oa,K.sha512_256=pa,K.sha512_224=qa)})(this);

@ -1,6 +1,6 @@
{
"name": "js-sha512",
"version": "0.2.1",
"version": "0.2.2",
"description": "This is a simple SHA-512, SHA-384, SHA-512/224, SHA-512/256 hash functions for JavaScript supports UTF-8 encoding.",
"main": "src/sha512.js",
"devDependencies": {

@ -1,5 +1,5 @@
/*
* js-sha512 v0.2.1
* js-sha512 v0.2.2
* https://github.com/emn178/js-sha512
*
* Copyright 2014-2015, emn178@gmail.com
@ -60,47 +60,27 @@
var blocks = [];
var sha512 = function(message, asciiOnly) {
return sha2(message, 512, asciiOnly);
var sha384 = function(message) {
return sha512(message, 384);
};
var sha384 = function(message, asciiOnly) {
return sha2(message, 384, asciiOnly);
var sha512_256 = function(message) {
return sha512(message, 256);
};
var sha512_256 = function(message, asciiOnly) {
return sha2(message, 256, asciiOnly);
var sha512_224 = function(message) {
return sha512(message, 224);
};
var sha512_224 = function(message, asciiOnly) {
return sha2(message, 224, asciiOnly);
};
var sha2 = function(message, tbit, asciiOnly) {
var sha512 = function(message, bits) {
var h0h, h0l, h1h, h1l, h2h, h2l, h3h, h3l,
h4h, h4l, h5h, h5l, h6h, h6l, h7h, h7l, block, code, end = false,
i, j, index = 0, start = 0, bytes = 0, length = message.length,
s0h, s0l, s1h, s1l, c1, c2, c3, c4,
abh, abl, dah, dal, cdh, cdl, bch, bcl,
majh, majl, t1h, t1l, t2h, t2l, chh, chl;
if(tbit == 512) {
h0h = 0x6A09E667;
h0l = 0xF3BCC908;
h1h = 0xBB67AE85;
h1l = 0x84CAA73B;
h2h = 0x3C6EF372;
h2l = 0xFE94F82B;
h3h = 0xA54FF53A;
h3l = 0x5F1D36F1;
h4h = 0x510E527F;
h4l = 0xADE682D1;
h5h = 0x9B05688C;
h5l = 0x2B3E6C1F;
h6h = 0x1F83D9AB;
h6l = 0xFB41BD6B;
h7h = 0x5BE0CD19;
h7l = 0x137E2179;
} else if(tbit == 384) {
if(bits == 384) {
h0h = 0xCBBB9D5D;
h0l = 0xC1059ED8;
h1h = 0x629A292A;
@ -117,7 +97,7 @@
h6l = 0x64F98FA7;
h7h = 0x47B5481D;
h7l = 0xBEFA4FA4;
} else if(tbit == 256) {
} else if(bits == 256) {
h0h = 0x22312194;
h0l = 0xFC2BF72C;
h1h = 0x9F555FA3;
@ -134,7 +114,7 @@
h6l = 0x2C85B8AA;
h7h = 0x0EB72DDC;
h7l = 0x81C52CA2;
} else if(tbit == 224) {
} else if(bits == 224) {
h0h = 0x8C3D37C8;
h0l = 0x19544DA2;
h1h = 0x73E19966;
@ -151,6 +131,24 @@
h6l = 0x6A1D36C8;
h7h = 0x1112E6AD;
h7l = 0x91D692A1;
} else { // 512
h0h = 0x6A09E667;
h0l = 0xF3BCC908;
h1h = 0xBB67AE85;
h1l = 0x84CAA73B;
h2h = 0x3C6EF372;
h2l = 0xFE94F82B;
h3h = 0xA54FF53A;
h3l = 0x5F1D36F1;
h4h = 0x510E527F;
h4l = 0xADE682D1;
h5h = 0x9B05688C;
h5l = 0x2B3E6C1F;
h6h = 0x1F83D9AB;
h6l = 0xFB41BD6B;
h7h = 0x5BE0CD19;
h7l = 0x137E2179;
bits = 512;
}
block = 0;
do {
@ -220,15 +218,19 @@
}
var ah = h0h, al = h0l, bh = h1h, bl = h1l, ch = h2h, cl = h2l, dh = h3h, dl = h3l, eh = h4h, el = h4l, fh = h5h, fl = h5l, gh = h6h, gl = h6l, hh = h7h, hl = h7l;
for(j = 0;j < 160;j += 2) {
bch = bh & ch;
bcl = bl & cl;
for(j = 0;j < 160;j += 8) {
s0h = ((ah >>> 28) | (al << 4)) ^ ((al >>> 2) | (ah << 30)) ^ ((al >>> 7) | (ah << 25));
s0l = ((al >>> 28) | (ah << 4)) ^ ((ah >>> 2) | (al << 30)) ^ ((ah >>> 7) | (al << 25));
s1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((el >>> 9) | (eh << 23));
s1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((eh >>> 9) | (el << 23));
majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
majl = (al & bl) ^ (al & cl) ^ (bl & cl);
abh = ah & bh;
abl = al & bl;
majh = abh ^ (ah & ch) ^ bch;
majl = abl ^ (al & cl) ^ bcl;
chh = (eh & fh) ^ (~eh & gh);
chl = (el & fl) ^ (~el & gl);
@ -254,28 +256,167 @@
t2h = (c4 << 16) | (c3 & 0xFFFF);
t2l = (c2 << 16) | (c1 & 0xFFFF);
hh = gh;
hl = gl;
gh = fh;
gl = fl;
fh = eh;
fl = el;
c1 = (dl & 0xFFFF) + (t1l & 0xFFFF);
c2 = (dl >>> 16) + (t1l >>> 16) + (c1 >>> 16);
c3 = (dh & 0xFFFF) + (t1h & 0xFFFF) + (c2 >>> 16);
c4 = (dh >>> 16) + (t1h >>> 16) + (c3 >>> 16);
hh = (c4 << 16) | (c3 & 0xFFFF);
hl = (c2 << 16) | (c1 & 0xFFFF);
c1 = (t2l & 0xFFFF) + (t1l & 0xFFFF);
c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16);
c3 = (t2h & 0xFFFF) + (t1h & 0xFFFF) + (c2 >>> 16);
c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16);
dh = (c4 << 16) | (c3 & 0xFFFF);
dl = (c2 << 16) | (c1 & 0xFFFF);
s0h = ((dh >>> 28) | (dl << 4)) ^ ((dl >>> 2) | (dh << 30)) ^ ((dl >>> 7) | (dh << 25));
s0l = ((dl >>> 28) | (dh << 4)) ^ ((dh >>> 2) | (dl << 30)) ^ ((dh >>> 7) | (dl << 25));
s1h = ((hh >>> 14) | (hl << 18)) ^ ((hh >>> 18) | (hl << 14)) ^ ((hl >>> 9) | (hh << 23));
s1l = ((hl >>> 14) | (hh << 18)) ^ ((hl >>> 18) | (hh << 14)) ^ ((hh >>> 9) | (hl << 23));
dah = dh & ah;
dal = dl & al;
majh = dah ^ (dh & bh) ^ abh;
majl = dal ^ (dl & bl) ^ abl;
chh = (hh & eh) ^ (~hh & fh);
chl = (hl & el) ^ (~hl & fl);
t1h = blocks[j + 2];
t1l = blocks[j + 3];
t2h = K[j + 2];
t2l = K[j + 3];
c1 = (t2l & 0xFFFF) + (t1l & 0xFFFF) + (chl & 0xFFFF) + (s1l & 0xFFFF) + (gl & 0xFFFF);
c2 = (t2l >>> 16) + (t1l >>> 16) + (chl >>> 16) + (s1l >>> 16) + (gl >>> 16) + (c1 >>> 16);
c3 = (t2h & 0xFFFF) + (t1h & 0xFFFF) + (chh & 0xFFFF) + (s1h & 0xFFFF) + (gh & 0xFFFF) + (c2 >>> 16);
c4 = (t2h >>> 16) + (t1h >>> 16) + (chh >>> 16) + (s1h >>> 16) + (gh >>> 16) + (c3 >>> 16);
t1h = (c4 << 16) | (c3 & 0xFFFF);
t1l = (c2 << 16) | (c1 & 0xFFFF);
c1 = (majl & 0xFFFF) + (s0l & 0xFFFF);
c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16);
c3 = (majh & 0xFFFF) + (s0h & 0xFFFF) + (c2 >>> 16);
c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16);
t2h = (c4 << 16) | (c3 & 0xFFFF);
t2l = (c2 << 16) | (c1 & 0xFFFF);
c1 = (cl & 0xFFFF) + (t1l & 0xFFFF);
c2 = (cl >>> 16) + (t1l >>> 16) + (c1 >>> 16);
c3 = (ch & 0xFFFF) + (t1h & 0xFFFF) + (c2 >>> 16);
c4 = (ch >>> 16) + (t1h >>> 16) + (c3 >>> 16);
gh = (c4 << 16) | (c3 & 0xFFFF);
gl = (c2 << 16) | (c1 & 0xFFFF);
c1 = (t2l & 0xFFFF) + (t1l & 0xFFFF);
c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16);
c3 = (t2h & 0xFFFF) + (t1h & 0xFFFF) + (c2 >>> 16);
c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16);
ch = (c4 << 16) | (c3 & 0xFFFF);
cl = (c2 << 16) | (c1 & 0xFFFF);
s0h = ((ch >>> 28) | (cl << 4)) ^ ((cl >>> 2) | (ch << 30)) ^ ((cl >>> 7) | (ch << 25));
s0l = ((cl >>> 28) | (ch << 4)) ^ ((ch >>> 2) | (cl << 30)) ^ ((ch >>> 7) | (cl << 25));
s1h = ((gh >>> 14) | (gl << 18)) ^ ((gh >>> 18) | (gl << 14)) ^ ((gl >>> 9) | (gh << 23));
s1l = ((gl >>> 14) | (gh << 18)) ^ ((gl >>> 18) | (gh << 14)) ^ ((gh >>> 9) | (gl << 23));
cdh = ch & dh;
cdl = cl & dl;
majh = cdh ^ (ch & ah) ^ dah;
majl = cdl ^ (cl & al) ^ dal;
chh = (gh & hh) ^ (~gh & eh);
chl = (gl & hl) ^ (~gl & el);
t1h = blocks[j + 4];
t1l = blocks[j + 5];
t2h = K[j + 4];
t2l = K[j + 5];
c1 = (t2l & 0xFFFF) + (t1l & 0xFFFF) + (chl & 0xFFFF) + (s1l & 0xFFFF) + (fl & 0xFFFF);
c2 = (t2l >>> 16) + (t1l >>> 16) + (chl >>> 16) + (s1l >>> 16) + (fl >>> 16) + (c1 >>> 16);
c3 = (t2h & 0xFFFF) + (t1h & 0xFFFF) + (chh & 0xFFFF) + (s1h & 0xFFFF) + (fh & 0xFFFF) + (c2 >>> 16);
c4 = (t2h >>> 16) + (t1h >>> 16) + (chh >>> 16) + (s1h >>> 16) + (fh >>> 16) + (c3 >>> 16);
t1h = (c4 << 16) | (c3 & 0xFFFF);
t1l = (c2 << 16) | (c1 & 0xFFFF);
c1 = (majl & 0xFFFF) + (s0l & 0xFFFF);
c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16);
c3 = (majh & 0xFFFF) + (s0h & 0xFFFF) + (c2 >>> 16);
c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16);
t2h = (c4 << 16) | (c3 & 0xFFFF);
t2l = (c2 << 16) | (c1 & 0xFFFF);
c1 = (bl & 0xFFFF) + (t1l & 0xFFFF);
c2 = (bl >>> 16) + (t1l >>> 16) + (c1 >>> 16);
c3 = (bh & 0xFFFF) + (t1h & 0xFFFF) + (c2 >>> 16);
c4 = (bh >>> 16) + (t1h >>> 16) + (c3 >>> 16);
fh = (c4 << 16) | (c3 & 0xFFFF);
fl = (c2 << 16) | (c1 & 0xFFFF);
c1 = (t2l & 0xFFFF) + (t1l & 0xFFFF);
c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16);
c3 = (t2h & 0xFFFF) + (t1h & 0xFFFF) + (c2 >>> 16);
c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16);
bh = (c4 << 16) | (c3 & 0xFFFF);
bl = (c2 << 16) | (c1 & 0xFFFF);
s0h = ((bh >>> 28) | (bl << 4)) ^ ((bl >>> 2) | (bh << 30)) ^ ((bl >>> 7) | (bh << 25));
s0l = ((bl >>> 28) | (bh << 4)) ^ ((bh >>> 2) | (bl << 30)) ^ ((bh >>> 7) | (bl << 25));
s1h = ((fh >>> 14) | (fl << 18)) ^ ((fh >>> 18) | (fl << 14)) ^ ((fl >>> 9) | (fh << 23));
s1l = ((fl >>> 14) | (fh << 18)) ^ ((fl >>> 18) | (fh << 14)) ^ ((fh >>> 9) | (fl << 23));
bch = bh & ch;
bcl = bl & cl;
majh = bch ^ (bh & dh) ^ cdh;
majl = bcl ^ (bl & dl) ^ cdl;
chh = (fh & gh) ^ (~fh & hh);
chl = (fl & gl) ^ (~fl & hl);
t1h = blocks[j + 6];
t1l = blocks[j + 7];
t2h = K[j + 6];
t2l = K[j + 7];
c1 = (t2l & 0xFFFF) + (t1l & 0xFFFF) + (chl & 0xFFFF) + (s1l & 0xFFFF) + (el & 0xFFFF);
c2 = (t2l >>> 16) + (t1l >>> 16) + (chl >>> 16) + (s1l >>> 16) + (el >>> 16) + (c1 >>> 16);
c3 = (t2h & 0xFFFF) + (t1h & 0xFFFF) + (chh & 0xFFFF) + (s1h & 0xFFFF) + (eh & 0xFFFF) + (c2 >>> 16);
c4 = (t2h >>> 16) + (t1h >>> 16) + (chh >>> 16) + (s1h >>> 16) + (eh >>> 16) + (c3 >>> 16);
t1h = (c4 << 16) | (c3 & 0xFFFF);
t1l = (c2 << 16) | (c1 & 0xFFFF);
c1 = (majl & 0xFFFF) + (s0l & 0xFFFF);
c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16);
c3 = (majh & 0xFFFF) + (s0h & 0xFFFF) + (c2 >>> 16);
c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16);
t2h = (c4 << 16) | (c3 & 0xFFFF);
t2l = (c2 << 16) | (c1 & 0xFFFF);
c1 = (al & 0xFFFF) + (t1l & 0xFFFF);
c2 = (al >>> 16) + (t1l >>> 16) + (c1 >>> 16);
c3 = (ah & 0xFFFF) + (t1h & 0xFFFF) + (c2 >>> 16);
c4 = (ah >>> 16) + (t1h >>> 16) + (c3 >>> 16);
eh = (c4 << 16) | (c3 & 0xFFFF);
el = (c2 << 16) | (c1 & 0xFFFF);
dh = ch;
dl = cl;
ch = bh;
cl = bl;
bh = ah;
bl = al;
c1 = (t2l & 0xFFFF) + (t1l & 0xFFFF);
c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16);
c3 = (t2h & 0xFFFF) + (t1h & 0xFFFF) + (c2 >>> 16);
@ -377,15 +518,14 @@
HEX_CHARS[(h3h >> 28) & 0x0F] + HEX_CHARS[(h3h >> 24) & 0x0F] +
HEX_CHARS[(h3h >> 20) & 0x0F] + HEX_CHARS[(h3h >> 16) & 0x0F] +
HEX_CHARS[(h3h >> 12) & 0x0F] + HEX_CHARS[(h3h >> 8) & 0x0F] +
HEX_CHARS[(h3h >> 4) & 0x0F] + HEX_CHARS[h3h & 0x0F] +
HEX_CHARS[(h3l >> 28) & 0x0F] + HEX_CHARS[(h3l >> 24) & 0x0F] +
HEX_CHARS[(h3h >> 4) & 0x0F] + HEX_CHARS[h3h & 0x0F];
if(bits >= 256) {
hex += HEX_CHARS[(h3l >> 28) & 0x0F] + HEX_CHARS[(h3l >> 24) & 0x0F] +
HEX_CHARS[(h3l >> 20) & 0x0F] + HEX_CHARS[(h3l >> 16) & 0x0F] +
HEX_CHARS[(h3l >> 12) & 0x0F] + HEX_CHARS[(h3l >> 8) & 0x0F] +
HEX_CHARS[(h3l >> 4) & 0x0F] + HEX_CHARS[h3l & 0x0F];
if(tbit == 224) {
return hex.substr(0, hex.length - 8);
}
if(tbit >= 384) {
if(bits >= 384) {
hex += HEX_CHARS[(h4h >> 28) & 0x0F] + HEX_CHARS[(h4h >> 24) & 0x0F] +
HEX_CHARS[(h4h >> 20) & 0x0F] + HEX_CHARS[(h4h >> 16) & 0x0F] +
HEX_CHARS[(h4h >> 12) & 0x0F] + HEX_CHARS[(h4h >> 8) & 0x0F] +
@ -403,7 +543,7 @@
HEX_CHARS[(h5l >> 12) & 0x0F] + HEX_CHARS[(h5l >> 8) & 0x0F] +
HEX_CHARS[(h5l >> 4) & 0x0F] + HEX_CHARS[h5l & 0x0F];
}
if(tbit == 512) {
if(bits == 512) {
hex += HEX_CHARS[(h6h >> 28) & 0x0F] + HEX_CHARS[(h6h >> 24) & 0x0F] +
HEX_CHARS[(h6h >> 20) & 0x0F] + HEX_CHARS[(h6h >> 16) & 0x0F] +
HEX_CHARS[(h6h >> 12) & 0x0F] + HEX_CHARS[(h6h >> 8) & 0x0F] +

@ -5,7 +5,7 @@
it('should be successful', function() {
expect(sha512('')).to.be('cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e');
expect(sha512('The quick brown fox jumps over the lazy dog')).to.be('07e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6');
expect(sha512('The quick brown fox jumps over the lazy dog.', true)).to.be('91ea1245f20d46ae9a037a989f54f1f790f0a47607eeb8a14d12890cea77a1bbc6c7ed9cf205e67b7f2b8fd4c7dfd3a7a8617e45f3c463d481c7e586c39ac1ed');
expect(sha512('The quick brown fox jumps over the lazy dog.')).to.be('91ea1245f20d46ae9a037a989f54f1f790f0a47607eeb8a14d12890cea77a1bbc6c7ed9cf205e67b7f2b8fd4c7dfd3a7a8617e45f3c463d481c7e586c39ac1ed');
});
});
@ -49,7 +49,7 @@
it('should be successful', function() {
expect(sha384('')).to.be('38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b');
expect(sha384('The quick brown fox jumps over the lazy dog')).to.be('ca737f1014a48f4c0b6dd43cb177b0afd9e5169367544c494011e3317dbf9a509cb1e5dc1e85a941bbee3d7f2afbc9b1');
expect(sha384('The quick brown fox jumps over the lazy dog.', true)).to.be('ed892481d8272ca6df370bf706e4d7bc1b5739fa2177aae6c50e946678718fc67a7af2819a021c2fc34e91bdb63409d7');
expect(sha384('The quick brown fox jumps over the lazy dog.')).to.be('ed892481d8272ca6df370bf706e4d7bc1b5739fa2177aae6c50e946678718fc67a7af2819a021c2fc34e91bdb63409d7');
});
});
@ -93,7 +93,7 @@
it('should be successful', function() {
expect(sha512_256('')).to.be('c672b8d1ef56ed28ab87c3622c5114069bdd3ad7b8f9737498d0c01ecef0967a');
expect(sha512_256('The quick brown fox jumps over the lazy dog')).to.be('dd9d67b371519c339ed8dbd25af90e976a1eeefd4ad3d889005e532fc5bef04d');
expect(sha512_256('The quick brown fox jumps over the lazy dog.', true)).to.be('1546741840f8a492b959d9b8b2344b9b0eb51b004bba35c0aebaac86d45264c3');
expect(sha512_256('The quick brown fox jumps over the lazy dog.')).to.be('1546741840f8a492b959d9b8b2344b9b0eb51b004bba35c0aebaac86d45264c3');
});
});
@ -137,7 +137,7 @@
it('should be successful', function() {
expect(sha512_224('')).to.be('6ed0dd02806fa89e25de060c19d3ac86cabb87d6a0ddd05c333b84f4');
expect(sha512_224('The quick brown fox jumps over the lazy dog')).to.be('944cd2847fb54558d4775db0485a50003111c8e5daa63fe722c6aa37');
expect(sha512_224('The quick brown fox jumps over the lazy dog.', true)).to.be('6d6a9279495ec4061769752e7ff9c68b6b0b3c5a281b7917ce0572de');
expect(sha512_224('The quick brown fox jumps over the lazy dog.')).to.be('6d6a9279495ec4061769752e7ff9c68b6b0b3c5a281b7917ce0572de');
});
});

Loading…
Cancel
Save