From 094ce76c5a7256e8a1ea8506e226a98f7d4749f4 Mon Sep 17 00:00:00 2001 From: Yi-Cyuan Chen Date: Tue, 31 Oct 2017 20:54:48 +0800 Subject: [PATCH] Fixed incorrect result when file size >= 512M. --- CHANGELOG.md | 4 ++++ bower.json | 2 +- build/sha512.min.js | 4 ++-- package.json | 2 +- src/sha512.js | 9 +++++++-- tests/test.js | 7 +++++++ 6 files changed, 22 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d030b4d..77cb1f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log +## v0.6.0 / 2017-10-31 +### Fixed +- incorrect result when file size >= 512M. + ## v0.5.0 / 2017-10-07 ### Added - support for web worker. #5 diff --git a/bower.json b/bower.json index 14484c9..48bd413 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "js-sha512", - "version": "0.5.0", + "version": "0.6.0", "main": ["src/sha512.js"], "ignore": [ "samples", diff --git a/build/sha512.min.js b/build/sha512.min.js index 0575e47..0b1b95e 100644 --- a/build/sha512.min.js +++ b/build/sha512.min.js @@ -1,9 +1,9 @@ /* * [js-sha512]{@link https://github.com/emn178/js-sha512} * - * @version 0.5.0 + * @version 0.6.0 * @author Chen, Yi-Cyuan [emn178@gmail.com] * @copyright Chen, Yi-Cyuan 2014-2017 * @license MIT */ -!function(){"use strict";function h(h,t){t?(y[0]=y[1]=y[2]=y[3]=y[4]=y[5]=y[6]=y[7]=y[8]=y[9]=y[10]=y[11]=y[12]=y[13]=y[14]=y[15]=y[16]=y[17]=y[18]=y[19]=y[20]=y[21]=y[22]=y[23]=y[24]=y[25]=y[26]=y[27]=y[28]=y[29]=y[30]=y[31]=y[32]=0,this.blocks=y):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],384==h?(this.h0h=3418070365,this.h0l=3238371032,this.h1h=1654270250,this.h1l=914150663,this.h2h=2438529370,this.h2l=812702999,this.h3h=355462360,this.h3l=4144912697,this.h4h=1731405415,this.h4l=4290775857,this.h5h=2394180231,this.h5l=1750603025,this.h6h=3675008525,this.h6l=1694076839,this.h7h=1203062813,this.h7l=3204075428):256==h?(this.h0h=573645204,this.h0l=4230739756,this.h1h=2673172387,this.h1l=3360449730,this.h2h=596883563,this.h2l=1867755857,this.h3h=2520282905,this.h3l=1497426621,this.h4h=2519219938,this.h4l=2827943907,this.h5h=3193839141,this.h5l=1401305490,this.h6h=721525244,this.h6l=746961066,this.h7h=246885852,this.h7l=2177182882):224==h?(this.h0h=2352822216,this.h0l=424955298,this.h1h=1944164710,this.h1l=2312950998,this.h2h=502970286,this.h2l=855612546,this.h3h=1738396948,this.h3l=1479516111,this.h4h=258812777,this.h4l=2077511080,this.h5h=2011393907,this.h5l=79989058,this.h6h=1067287976,this.h6l=1780299464,this.h7h=286451373,this.h7l=2446758561):(this.h0h=1779033703,this.h0l=4089235720,this.h1h=3144134277,this.h1l=2227873595,this.h2h=1013904242,this.h2l=4271175723,this.h3h=2773480762,this.h3l=1595750129,this.h4h=1359893119,this.h4l=2917565137,this.h5h=2600822924,this.h5l=725511199,this.h6h=528734635,this.h6l=4215389547,this.h7h=1541459225,this.h7l=327033209),this.bits=h,this.block=this.start=this.bytes=0,this.finalized=this.hashed=!1}var t="input is invalid type",i="object"==typeof window,s=i?window:{};s.JS_SHA512_NO_WINDOW&&(i=!1);var e=!i&&"object"==typeof self,r=!s.JS_SHA512_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node;r?s=global:e&&(s=self);var l=!s.JS_SHA512_NO_COMMON_JS&&"object"==typeof module&&module.exports,n="function"==typeof define&&define.amd,o=!s.JS_SHA512_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,a="0123456789abcdef".split(""),f=[-2147483648,8388608,32768,128],u=[24,16,8,0],c=[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],p=["hex","array","digest","arrayBuffer"],y=[];(s.JS_SHA512_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(h){return"[object Array]"===Object.prototype.toString.call(h)}),!o||!s.JS_SHA512_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(h){return"object"==typeof h&&h.buffer&&h.buffer.constructor===ArrayBuffer});var d=function(t,i){return function(s){return new h(i,!0).update(s)[t]()}},_=function(t){var i=d("hex",t);i.create=function(){return new h(t)},i.update=function(h){return i.create().update(h)};for(var s=0;sn;){if(this.hashed&&(this.hashed=!1,a[0]=this.block,a[1]=a[2]=a[3]=a[4]=a[5]=a[6]=a[7]=a[8]=a[9]=a[10]=a[11]=a[12]=a[13]=a[14]=a[15]=a[16]=a[17]=a[18]=a[19]=a[20]=a[21]=a[22]=a[23]=a[24]=a[25]=a[26]=a[27]=a[28]=a[29]=a[30]=a[31]=a[32]=0),i)for(r=this.start;l>n&&128>r;++n)a[r>>2]|=h[n]<n&&128>r;++n)e=h.charCodeAt(n),128>e?a[r>>2]|=e<e?(a[r>>2]|=(192|e>>6)<>2]|=(128|63&e)<e||e>=57344?(a[r>>2]|=(224|e>>12)<>2]|=(128|e>>6&63)<>2]|=(128|63&e)<>2]|=(240|e>>18)<>2]|=(128|e>>12&63)<>2]|=(128|e>>6&63)<>2]|=(128|63&e)<=128?(this.block=a[32],this.start=r-128,this.hash(),this.hashed=!0):this.start=r}return this}},h.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var h=this.blocks,t=this.lastByteIndex;h[32]=this.block,h[t>>2]|=f[3&t],this.block=h[32],t>=112&&(this.hashed||this.hash(),h[0]=this.block,h[1]=h[2]=h[3]=h[4]=h[5]=h[6]=h[7]=h[8]=h[9]=h[10]=h[11]=h[12]=h[13]=h[14]=h[15]=h[16]=h[17]=h[18]=h[19]=h[20]=h[21]=h[22]=h[23]=h[24]=h[25]=h[26]=h[27]=h[28]=h[29]=h[30]=h[31]=h[32]=0),h[31]=this.bytes<<3,this.hash()}},h.prototype.hash=function(){var h,t,i,s,e,r,l,n,o,a,f,u,p,y,d,_,b,A,v,U,S,w,B,O,k,g=this.h0h,N=this.h0l,J=this.h1h,j=this.h1l,x=this.h2h,z=this.h2l,H=this.h3h,R=this.h3l,E=this.h4h,I=this.h4l,V=this.h5h,m=this.h5l,D=this.h6h,F=this.h6l,C=this.h7h,W=this.h7l,M=this.blocks;for(h=32;160>h;h+=2)U=M[h-30],S=M[h-29],t=(U>>>1|S<<31)^(U>>>8|S<<24)^U>>>7,i=(S>>>1|U<<31)^(S>>>8|U<<24)^(S>>>7|U<<25),U=M[h-4],S=M[h-3],s=(U>>>19|S<<13)^(S>>>29|U<<3)^U>>>6,e=(S>>>19|U<<13)^(U>>>29|S<<3)^(S>>>6|U<<26),U=M[h-32],S=M[h-31],w=M[h-14],B=M[h-13],r=(65535&B)+(65535&S)+(65535&i)+(65535&e),l=(B>>>16)+(S>>>16)+(i>>>16)+(e>>>16)+(r>>>16),n=(65535&w)+(65535&U)+(65535&t)+(65535&s)+(l>>>16),o=(w>>>16)+(U>>>16)+(t>>>16)+(s>>>16)+(n>>>16),M[h]=o<<16|65535&n,M[h+1]=l<<16|65535&r;var Y=g,q=N,G=J,K=j,L=x,P=z,Q=H,T=R,X=E,Z=I,$=V,ht=m,tt=D,it=F,st=C,et=W;for(_=G&L,b=K&P,h=0;160>h;h+=8)t=(Y>>>28|q<<4)^(q>>>2|Y<<30)^(q>>>7|Y<<25),i=(q>>>28|Y<<4)^(Y>>>2|q<<30)^(Y>>>7|q<<25),s=(X>>>14|Z<<18)^(X>>>18|Z<<14)^(Z>>>9|X<<23),e=(Z>>>14|X<<18)^(Z>>>18|X<<14)^(X>>>9|Z<<23),a=Y&G,f=q&K,A=a^Y&L^_,v=f^q&P^b,O=X&$^~X&tt,k=Z&ht^~Z&it,U=M[h],S=M[h+1],w=c[h],B=c[h+1],r=(65535&B)+(65535&S)+(65535&k)+(65535&e)+(65535&et),l=(B>>>16)+(S>>>16)+(k>>>16)+(e>>>16)+(et>>>16)+(r>>>16),n=(65535&w)+(65535&U)+(65535&O)+(65535&s)+(65535&st)+(l>>>16),o=(w>>>16)+(U>>>16)+(O>>>16)+(s>>>16)+(st>>>16)+(n>>>16),U=o<<16|65535&n,S=l<<16|65535&r,r=(65535&v)+(65535&i),l=(v>>>16)+(i>>>16)+(r>>>16),n=(65535&A)+(65535&t)+(l>>>16),o=(A>>>16)+(t>>>16)+(n>>>16),w=o<<16|65535&n,B=l<<16|65535&r,r=(65535&T)+(65535&S),l=(T>>>16)+(S>>>16)+(r>>>16),n=(65535&Q)+(65535&U)+(l>>>16),o=(Q>>>16)+(U>>>16)+(n>>>16),st=o<<16|65535&n,et=l<<16|65535&r,r=(65535&B)+(65535&S),l=(B>>>16)+(S>>>16)+(r>>>16),n=(65535&w)+(65535&U)+(l>>>16),o=(w>>>16)+(U>>>16)+(n>>>16),Q=o<<16|65535&n,T=l<<16|65535&r,t=(Q>>>28|T<<4)^(T>>>2|Q<<30)^(T>>>7|Q<<25),i=(T>>>28|Q<<4)^(Q>>>2|T<<30)^(Q>>>7|T<<25),s=(st>>>14|et<<18)^(st>>>18|et<<14)^(et>>>9|st<<23),e=(et>>>14|st<<18)^(et>>>18|st<<14)^(st>>>9|et<<23),u=Q&Y,p=T&q,A=u^Q&G^a,v=p^T&K^f,O=st&X^~st&$,k=et&Z^~et&ht,U=M[h+2],S=M[h+3],w=c[h+2],B=c[h+3],r=(65535&B)+(65535&S)+(65535&k)+(65535&e)+(65535&it),l=(B>>>16)+(S>>>16)+(k>>>16)+(e>>>16)+(it>>>16)+(r>>>16),n=(65535&w)+(65535&U)+(65535&O)+(65535&s)+(65535&tt)+(l>>>16),o=(w>>>16)+(U>>>16)+(O>>>16)+(s>>>16)+(tt>>>16)+(n>>>16),U=o<<16|65535&n,S=l<<16|65535&r,r=(65535&v)+(65535&i),l=(v>>>16)+(i>>>16)+(r>>>16),n=(65535&A)+(65535&t)+(l>>>16),o=(A>>>16)+(t>>>16)+(n>>>16),w=o<<16|65535&n,B=l<<16|65535&r,r=(65535&P)+(65535&S),l=(P>>>16)+(S>>>16)+(r>>>16),n=(65535&L)+(65535&U)+(l>>>16),o=(L>>>16)+(U>>>16)+(n>>>16),tt=o<<16|65535&n,it=l<<16|65535&r,r=(65535&B)+(65535&S),l=(B>>>16)+(S>>>16)+(r>>>16),n=(65535&w)+(65535&U)+(l>>>16),o=(w>>>16)+(U>>>16)+(n>>>16),L=o<<16|65535&n,P=l<<16|65535&r,t=(L>>>28|P<<4)^(P>>>2|L<<30)^(P>>>7|L<<25),i=(P>>>28|L<<4)^(L>>>2|P<<30)^(L>>>7|P<<25),s=(tt>>>14|it<<18)^(tt>>>18|it<<14)^(it>>>9|tt<<23),e=(it>>>14|tt<<18)^(it>>>18|tt<<14)^(tt>>>9|it<<23),y=L&Q,d=P&T,A=y^L&Y^u,v=d^P&q^p,O=tt&st^~tt&X,k=it&et^~it&Z,U=M[h+4],S=M[h+5],w=c[h+4],B=c[h+5],r=(65535&B)+(65535&S)+(65535&k)+(65535&e)+(65535&ht),l=(B>>>16)+(S>>>16)+(k>>>16)+(e>>>16)+(ht>>>16)+(r>>>16),n=(65535&w)+(65535&U)+(65535&O)+(65535&s)+(65535&$)+(l>>>16),o=(w>>>16)+(U>>>16)+(O>>>16)+(s>>>16)+($>>>16)+(n>>>16),U=o<<16|65535&n,S=l<<16|65535&r,r=(65535&v)+(65535&i),l=(v>>>16)+(i>>>16)+(r>>>16),n=(65535&A)+(65535&t)+(l>>>16),o=(A>>>16)+(t>>>16)+(n>>>16),w=o<<16|65535&n,B=l<<16|65535&r,r=(65535&K)+(65535&S),l=(K>>>16)+(S>>>16)+(r>>>16),n=(65535&G)+(65535&U)+(l>>>16),o=(G>>>16)+(U>>>16)+(n>>>16),$=o<<16|65535&n,ht=l<<16|65535&r,r=(65535&B)+(65535&S),l=(B>>>16)+(S>>>16)+(r>>>16),n=(65535&w)+(65535&U)+(l>>>16),o=(w>>>16)+(U>>>16)+(n>>>16),G=o<<16|65535&n,K=l<<16|65535&r,t=(G>>>28|K<<4)^(K>>>2|G<<30)^(K>>>7|G<<25),i=(K>>>28|G<<4)^(G>>>2|K<<30)^(G>>>7|K<<25),s=($>>>14|ht<<18)^($>>>18|ht<<14)^(ht>>>9|$<<23),e=(ht>>>14|$<<18)^(ht>>>18|$<<14)^($>>>9|ht<<23),_=G&L,b=K&P,A=_^G&Q^y,v=b^K&T^d,O=$&tt^~$&st,k=ht&it^~ht&et,U=M[h+6],S=M[h+7],w=c[h+6],B=c[h+7],r=(65535&B)+(65535&S)+(65535&k)+(65535&e)+(65535&Z),l=(B>>>16)+(S>>>16)+(k>>>16)+(e>>>16)+(Z>>>16)+(r>>>16),n=(65535&w)+(65535&U)+(65535&O)+(65535&s)+(65535&X)+(l>>>16),o=(w>>>16)+(U>>>16)+(O>>>16)+(s>>>16)+(X>>>16)+(n>>>16),U=o<<16|65535&n,S=l<<16|65535&r,r=(65535&v)+(65535&i),l=(v>>>16)+(i>>>16)+(r>>>16),n=(65535&A)+(65535&t)+(l>>>16),o=(A>>>16)+(t>>>16)+(n>>>16),w=o<<16|65535&n,B=l<<16|65535&r,r=(65535&q)+(65535&S),l=(q>>>16)+(S>>>16)+(r>>>16),n=(65535&Y)+(65535&U)+(l>>>16),o=(Y>>>16)+(U>>>16)+(n>>>16),X=o<<16|65535&n,Z=l<<16|65535&r,r=(65535&B)+(65535&S),l=(B>>>16)+(S>>>16)+(r>>>16),n=(65535&w)+(65535&U)+(l>>>16),o=(w>>>16)+(U>>>16)+(n>>>16),Y=o<<16|65535&n,q=l<<16|65535&r;r=(65535&N)+(65535&q),l=(N>>>16)+(q>>>16)+(r>>>16),n=(65535&g)+(65535&Y)+(l>>>16),o=(g>>>16)+(Y>>>16)+(n>>>16),this.h0h=o<<16|65535&n,this.h0l=l<<16|65535&r,r=(65535&j)+(65535&K),l=(j>>>16)+(K>>>16)+(r>>>16),n=(65535&J)+(65535&G)+(l>>>16),o=(J>>>16)+(G>>>16)+(n>>>16),this.h1h=o<<16|65535&n,this.h1l=l<<16|65535&r,r=(65535&z)+(65535&P),l=(z>>>16)+(P>>>16)+(r>>>16),n=(65535&x)+(65535&L)+(l>>>16),o=(x>>>16)+(L>>>16)+(n>>>16),this.h2h=o<<16|65535&n,this.h2l=l<<16|65535&r,r=(65535&R)+(65535&T),l=(R>>>16)+(T>>>16)+(r>>>16),n=(65535&H)+(65535&Q)+(l>>>16),o=(H>>>16)+(Q>>>16)+(n>>>16),this.h3h=o<<16|65535&n,this.h3l=l<<16|65535&r,r=(65535&I)+(65535&Z),l=(I>>>16)+(Z>>>16)+(r>>>16),n=(65535&E)+(65535&X)+(l>>>16),o=(E>>>16)+(X>>>16)+(n>>>16),this.h4h=o<<16|65535&n,this.h4l=l<<16|65535&r,r=(65535&m)+(65535&ht),l=(m>>>16)+(ht>>>16)+(r>>>16),n=(65535&V)+(65535&$)+(l>>>16),o=(V>>>16)+($>>>16)+(n>>>16),this.h5h=o<<16|65535&n,this.h5l=l<<16|65535&r,r=(65535&F)+(65535&it),l=(F>>>16)+(it>>>16)+(r>>>16),n=(65535&D)+(65535&tt)+(l>>>16),o=(D>>>16)+(tt>>>16)+(n>>>16),this.h6h=o<<16|65535&n,this.h6l=l<<16|65535&r,r=(65535&W)+(65535&et),l=(W>>>16)+(et>>>16)+(r>>>16),n=(65535&C)+(65535&st)+(l>>>16),o=(C>>>16)+(st>>>16)+(n>>>16),this.h7h=o<<16|65535&n,this.h7l=l<<16|65535&r},h.prototype.hex=function(){this.finalize();var h=this.h0h,t=this.h0l,i=this.h1h,s=this.h1l,e=this.h2h,r=this.h2l,l=this.h3h,n=this.h3l,o=this.h4h,f=this.h4l,u=this.h5h,c=this.h5l,p=this.h6h,y=this.h6l,d=this.h7h,_=this.h7l,b=this.bits,A=a[h>>28&15]+a[h>>24&15]+a[h>>20&15]+a[h>>16&15]+a[h>>12&15]+a[h>>8&15]+a[h>>4&15]+a[15&h]+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[15&t]+a[i>>28&15]+a[i>>24&15]+a[i>>20&15]+a[i>>16&15]+a[i>>12&15]+a[i>>8&15]+a[i>>4&15]+a[15&i]+a[s>>28&15]+a[s>>24&15]+a[s>>20&15]+a[s>>16&15]+a[s>>12&15]+a[s>>8&15]+a[s>>4&15]+a[15&s]+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[15&e]+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[15&r]+a[l>>28&15]+a[l>>24&15]+a[l>>20&15]+a[l>>16&15]+a[l>>12&15]+a[l>>8&15]+a[l>>4&15]+a[15&l];return b>=256&&(A+=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[15&n]),b>=384&&(A+=a[o>>28&15]+a[o>>24&15]+a[o>>20&15]+a[o>>16&15]+a[o>>12&15]+a[o>>8&15]+a[o>>4&15]+a[15&o]+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[15&f]+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[15&u]+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[15&c]),512==b&&(A+=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[15&p]+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[15&y]+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[15&d]+a[_>>28&15]+a[_>>24&15]+a[_>>20&15]+a[_>>16&15]+a[_>>12&15]+a[_>>8&15]+a[_>>4&15]+a[15&_]),A},h.prototype.toString=h.prototype.hex,h.prototype.digest=function(){this.finalize();var h=this.h0h,t=this.h0l,i=this.h1h,s=this.h1l,e=this.h2h,r=this.h2l,l=this.h3h,n=this.h3l,o=this.h4h,a=this.h4l,f=this.h5h,u=this.h5l,c=this.h6h,p=this.h6l,y=this.h7h,d=this.h7l,_=this.bits,b=[h>>24&255,h>>16&255,h>>8&255,255&h,t>>24&255,t>>16&255,t>>8&255,255&t,i>>24&255,i>>16&255,i>>8&255,255&i,s>>24&255,s>>16&255,s>>8&255,255&s,e>>24&255,e>>16&255,e>>8&255,255&e,r>>24&255,r>>16&255,r>>8&255,255&r,l>>24&255,l>>16&255,l>>8&255,255&l];return _>=256&&b.push(n>>24&255,n>>16&255,n>>8&255,255&n),_>=384&&b.push(o>>24&255,o>>16&255,o>>8&255,255&o,a>>24&255,a>>16&255,a>>8&255,255&a,f>>24&255,f>>16&255,f>>8&255,255&f,u>>24&255,u>>16&255,u>>8&255,255&u),512==_&&b.push(c>>24&255,c>>16&255,c>>8&255,255&c,p>>24&255,p>>16&255,p>>8&255,255&p,y>>24&255,y>>16&255,y>>8&255,255&y,d>>24&255,d>>16&255,d>>8&255,255&d),b},h.prototype.array=h.prototype.digest,h.prototype.arrayBuffer=function(){this.finalize();var h=this.bits,t=new ArrayBuffer(h/8),i=new DataView(t);return i.setUint32(0,this.h0h),i.setUint32(4,this.h0l),i.setUint32(8,this.h1h),i.setUint32(12,this.h1l),i.setUint32(16,this.h2h),i.setUint32(20,this.h2l),i.setUint32(24,this.h3h),h>=256&&i.setUint32(28,this.h3l),h>=384&&(i.setUint32(32,this.h4h),i.setUint32(36,this.h4l),i.setUint32(40,this.h5h),i.setUint32(44,this.h5l)),512==h&&(i.setUint32(48,this.h6h),i.setUint32(52,this.h6l),i.setUint32(56,this.h7h),i.setUint32(60,this.h7l)),t};var b=_(512);b.sha512=b,b.sha384=_(384),b.sha512_256=_(256),b.sha512_224=_(224),l?module.exports=b:(s.sha512=b.sha512,s.sha384=b.sha384,s.sha512_256=b.sha512_256,s.sha512_224=b.sha512_224,n&&define(function(){return b}))}(); \ No newline at end of file +!function(){"use strict";function h(h,t){t?(p[0]=p[1]=p[2]=p[3]=p[4]=p[5]=p[6]=p[7]=p[8]=p[9]=p[10]=p[11]=p[12]=p[13]=p[14]=p[15]=p[16]=p[17]=p[18]=p[19]=p[20]=p[21]=p[22]=p[23]=p[24]=p[25]=p[26]=p[27]=p[28]=p[29]=p[30]=p[31]=p[32]=0,this.blocks=p):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],384==h?(this.h0h=3418070365,this.h0l=3238371032,this.h1h=1654270250,this.h1l=914150663,this.h2h=2438529370,this.h2l=812702999,this.h3h=355462360,this.h3l=4144912697,this.h4h=1731405415,this.h4l=4290775857,this.h5h=2394180231,this.h5l=1750603025,this.h6h=3675008525,this.h6l=1694076839,this.h7h=1203062813,this.h7l=3204075428):256==h?(this.h0h=573645204,this.h0l=4230739756,this.h1h=2673172387,this.h1l=3360449730,this.h2h=596883563,this.h2l=1867755857,this.h3h=2520282905,this.h3l=1497426621,this.h4h=2519219938,this.h4l=2827943907,this.h5h=3193839141,this.h5l=1401305490,this.h6h=721525244,this.h6l=746961066,this.h7h=246885852,this.h7l=2177182882):224==h?(this.h0h=2352822216,this.h0l=424955298,this.h1h=1944164710,this.h1l=2312950998,this.h2h=502970286,this.h2l=855612546,this.h3h=1738396948,this.h3l=1479516111,this.h4h=258812777,this.h4l=2077511080,this.h5h=2011393907,this.h5l=79989058,this.h6h=1067287976,this.h6l=1780299464,this.h7h=286451373,this.h7l=2446758561):(this.h0h=1779033703,this.h0l=4089235720,this.h1h=3144134277,this.h1l=2227873595,this.h2h=1013904242,this.h2l=4271175723,this.h3h=2773480762,this.h3l=1595750129,this.h4h=1359893119,this.h4l=2917565137,this.h5h=2600822924,this.h5l=725511199,this.h6h=528734635,this.h6l=4215389547,this.h7h=1541459225,this.h7l=327033209),this.bits=h,this.block=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1}var t="input is invalid type",s="object"==typeof window,i=s?window:{};i.JS_SHA512_NO_WINDOW&&(s=!1);var e=!s&&"object"==typeof self,r=!i.JS_SHA512_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node;r?i=global:e&&(i=self);var l=!i.JS_SHA512_NO_COMMON_JS&&"object"==typeof module&&module.exports,n="function"==typeof define&&define.amd,o=!i.JS_SHA512_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,a="0123456789abcdef".split(""),f=[-2147483648,8388608,32768,128],u=[24,16,8,0],y=[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],c=["hex","array","digest","arrayBuffer"],p=[];(i.JS_SHA512_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(h){return"[object Array]"===Object.prototype.toString.call(h)}),!o||!i.JS_SHA512_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(h){return"object"==typeof h&&h.buffer&&h.buffer.constructor===ArrayBuffer});var b=function(t,s){return function(i){return new h(s,!0).update(i)[t]()}},d=function(t){var s=b("hex",t);s.create=function(){return new h(t)},s.update=function(h){return s.create().update(h)};for(var i=0;in;){if(this.hashed&&(this.hashed=!1,a[0]=this.block,a[1]=a[2]=a[3]=a[4]=a[5]=a[6]=a[7]=a[8]=a[9]=a[10]=a[11]=a[12]=a[13]=a[14]=a[15]=a[16]=a[17]=a[18]=a[19]=a[20]=a[21]=a[22]=a[23]=a[24]=a[25]=a[26]=a[27]=a[28]=a[29]=a[30]=a[31]=a[32]=0),s)for(r=this.start;l>n&&128>r;++n)a[r>>2]|=h[n]<n&&128>r;++n)e=h.charCodeAt(n),128>e?a[r>>2]|=e<e?(a[r>>2]|=(192|e>>6)<>2]|=(128|63&e)<e||e>=57344?(a[r>>2]|=(224|e>>12)<>2]|=(128|e>>6&63)<>2]|=(128|63&e)<>2]|=(240|e>>18)<>2]|=(128|e>>12&63)<>2]|=(128|e>>6&63)<>2]|=(128|63&e)<=128?(this.block=a[32],this.start=r-128,this.hash(),this.hashed=!0):this.start=r}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this}},h.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var h=this.blocks,t=this.lastByteIndex;h[32]=this.block,h[t>>2]|=f[3&t],this.block=h[32],t>=112&&(this.hashed||this.hash(),h[0]=this.block,h[1]=h[2]=h[3]=h[4]=h[5]=h[6]=h[7]=h[8]=h[9]=h[10]=h[11]=h[12]=h[13]=h[14]=h[15]=h[16]=h[17]=h[18]=h[19]=h[20]=h[21]=h[22]=h[23]=h[24]=h[25]=h[26]=h[27]=h[28]=h[29]=h[30]=h[31]=h[32]=0),h[30]=this.hBytes<<3|this.bytes>>29,h[31]=this.bytes<<3,this.hash()}},h.prototype.hash=function(){var h,t,s,i,e,r,l,n,o,a,f,u,c,p,b,d,_,A,v,U,S,w,B,O,k,g=this.h0h,N=this.h0l,J=this.h1h,j=this.h1l,x=this.h2h,z=this.h2l,H=this.h3h,R=this.h3l,E=this.h4h,I=this.h4l,V=this.h5h,m=this.h5l,D=this.h6h,F=this.h6l,C=this.h7h,W=this.h7l,M=this.blocks;for(h=32;160>h;h+=2)U=M[h-30],S=M[h-29],t=(U>>>1|S<<31)^(U>>>8|S<<24)^U>>>7,s=(S>>>1|U<<31)^(S>>>8|U<<24)^(S>>>7|U<<25),U=M[h-4],S=M[h-3],i=(U>>>19|S<<13)^(S>>>29|U<<3)^U>>>6,e=(S>>>19|U<<13)^(U>>>29|S<<3)^(S>>>6|U<<26),U=M[h-32],S=M[h-31],w=M[h-14],B=M[h-13],r=(65535&B)+(65535&S)+(65535&s)+(65535&e),l=(B>>>16)+(S>>>16)+(s>>>16)+(e>>>16)+(r>>>16),n=(65535&w)+(65535&U)+(65535&t)+(65535&i)+(l>>>16),o=(w>>>16)+(U>>>16)+(t>>>16)+(i>>>16)+(n>>>16),M[h]=o<<16|65535&n,M[h+1]=l<<16|65535&r;var Y=g,q=N,G=J,K=j,L=x,P=z,Q=H,T=R,X=E,Z=I,$=V,ht=m,tt=D,st=F,it=C,et=W;for(d=G&L,_=K&P,h=0;160>h;h+=8)t=(Y>>>28|q<<4)^(q>>>2|Y<<30)^(q>>>7|Y<<25),s=(q>>>28|Y<<4)^(Y>>>2|q<<30)^(Y>>>7|q<<25),i=(X>>>14|Z<<18)^(X>>>18|Z<<14)^(Z>>>9|X<<23),e=(Z>>>14|X<<18)^(Z>>>18|X<<14)^(X>>>9|Z<<23),a=Y&G,f=q&K,A=a^Y&L^d,v=f^q&P^_,O=X&$^~X&tt,k=Z&ht^~Z&st,U=M[h],S=M[h+1],w=y[h],B=y[h+1],r=(65535&B)+(65535&S)+(65535&k)+(65535&e)+(65535&et),l=(B>>>16)+(S>>>16)+(k>>>16)+(e>>>16)+(et>>>16)+(r>>>16),n=(65535&w)+(65535&U)+(65535&O)+(65535&i)+(65535&it)+(l>>>16),o=(w>>>16)+(U>>>16)+(O>>>16)+(i>>>16)+(it>>>16)+(n>>>16),U=o<<16|65535&n,S=l<<16|65535&r,r=(65535&v)+(65535&s),l=(v>>>16)+(s>>>16)+(r>>>16),n=(65535&A)+(65535&t)+(l>>>16),o=(A>>>16)+(t>>>16)+(n>>>16),w=o<<16|65535&n,B=l<<16|65535&r,r=(65535&T)+(65535&S),l=(T>>>16)+(S>>>16)+(r>>>16),n=(65535&Q)+(65535&U)+(l>>>16),o=(Q>>>16)+(U>>>16)+(n>>>16),it=o<<16|65535&n,et=l<<16|65535&r,r=(65535&B)+(65535&S),l=(B>>>16)+(S>>>16)+(r>>>16),n=(65535&w)+(65535&U)+(l>>>16),o=(w>>>16)+(U>>>16)+(n>>>16),Q=o<<16|65535&n,T=l<<16|65535&r,t=(Q>>>28|T<<4)^(T>>>2|Q<<30)^(T>>>7|Q<<25),s=(T>>>28|Q<<4)^(Q>>>2|T<<30)^(Q>>>7|T<<25),i=(it>>>14|et<<18)^(it>>>18|et<<14)^(et>>>9|it<<23),e=(et>>>14|it<<18)^(et>>>18|it<<14)^(it>>>9|et<<23),u=Q&Y,c=T&q,A=u^Q&G^a,v=c^T&K^f,O=it&X^~it&$,k=et&Z^~et&ht,U=M[h+2],S=M[h+3],w=y[h+2],B=y[h+3],r=(65535&B)+(65535&S)+(65535&k)+(65535&e)+(65535&st),l=(B>>>16)+(S>>>16)+(k>>>16)+(e>>>16)+(st>>>16)+(r>>>16),n=(65535&w)+(65535&U)+(65535&O)+(65535&i)+(65535&tt)+(l>>>16),o=(w>>>16)+(U>>>16)+(O>>>16)+(i>>>16)+(tt>>>16)+(n>>>16),U=o<<16|65535&n,S=l<<16|65535&r,r=(65535&v)+(65535&s),l=(v>>>16)+(s>>>16)+(r>>>16),n=(65535&A)+(65535&t)+(l>>>16),o=(A>>>16)+(t>>>16)+(n>>>16),w=o<<16|65535&n,B=l<<16|65535&r,r=(65535&P)+(65535&S),l=(P>>>16)+(S>>>16)+(r>>>16),n=(65535&L)+(65535&U)+(l>>>16),o=(L>>>16)+(U>>>16)+(n>>>16),tt=o<<16|65535&n,st=l<<16|65535&r,r=(65535&B)+(65535&S),l=(B>>>16)+(S>>>16)+(r>>>16),n=(65535&w)+(65535&U)+(l>>>16),o=(w>>>16)+(U>>>16)+(n>>>16),L=o<<16|65535&n,P=l<<16|65535&r,t=(L>>>28|P<<4)^(P>>>2|L<<30)^(P>>>7|L<<25),s=(P>>>28|L<<4)^(L>>>2|P<<30)^(L>>>7|P<<25),i=(tt>>>14|st<<18)^(tt>>>18|st<<14)^(st>>>9|tt<<23),e=(st>>>14|tt<<18)^(st>>>18|tt<<14)^(tt>>>9|st<<23),p=L&Q,b=P&T,A=p^L&Y^u,v=b^P&q^c,O=tt&it^~tt&X,k=st&et^~st&Z,U=M[h+4],S=M[h+5],w=y[h+4],B=y[h+5],r=(65535&B)+(65535&S)+(65535&k)+(65535&e)+(65535&ht),l=(B>>>16)+(S>>>16)+(k>>>16)+(e>>>16)+(ht>>>16)+(r>>>16),n=(65535&w)+(65535&U)+(65535&O)+(65535&i)+(65535&$)+(l>>>16),o=(w>>>16)+(U>>>16)+(O>>>16)+(i>>>16)+($>>>16)+(n>>>16),U=o<<16|65535&n,S=l<<16|65535&r,r=(65535&v)+(65535&s),l=(v>>>16)+(s>>>16)+(r>>>16),n=(65535&A)+(65535&t)+(l>>>16),o=(A>>>16)+(t>>>16)+(n>>>16),w=o<<16|65535&n,B=l<<16|65535&r,r=(65535&K)+(65535&S),l=(K>>>16)+(S>>>16)+(r>>>16),n=(65535&G)+(65535&U)+(l>>>16),o=(G>>>16)+(U>>>16)+(n>>>16),$=o<<16|65535&n,ht=l<<16|65535&r,r=(65535&B)+(65535&S),l=(B>>>16)+(S>>>16)+(r>>>16),n=(65535&w)+(65535&U)+(l>>>16),o=(w>>>16)+(U>>>16)+(n>>>16),G=o<<16|65535&n,K=l<<16|65535&r,t=(G>>>28|K<<4)^(K>>>2|G<<30)^(K>>>7|G<<25),s=(K>>>28|G<<4)^(G>>>2|K<<30)^(G>>>7|K<<25),i=($>>>14|ht<<18)^($>>>18|ht<<14)^(ht>>>9|$<<23),e=(ht>>>14|$<<18)^(ht>>>18|$<<14)^($>>>9|ht<<23),d=G&L,_=K&P,A=d^G&Q^p,v=_^K&T^b,O=$&tt^~$&it,k=ht&st^~ht&et,U=M[h+6],S=M[h+7],w=y[h+6],B=y[h+7],r=(65535&B)+(65535&S)+(65535&k)+(65535&e)+(65535&Z),l=(B>>>16)+(S>>>16)+(k>>>16)+(e>>>16)+(Z>>>16)+(r>>>16),n=(65535&w)+(65535&U)+(65535&O)+(65535&i)+(65535&X)+(l>>>16),o=(w>>>16)+(U>>>16)+(O>>>16)+(i>>>16)+(X>>>16)+(n>>>16),U=o<<16|65535&n,S=l<<16|65535&r,r=(65535&v)+(65535&s),l=(v>>>16)+(s>>>16)+(r>>>16),n=(65535&A)+(65535&t)+(l>>>16),o=(A>>>16)+(t>>>16)+(n>>>16),w=o<<16|65535&n,B=l<<16|65535&r,r=(65535&q)+(65535&S),l=(q>>>16)+(S>>>16)+(r>>>16),n=(65535&Y)+(65535&U)+(l>>>16),o=(Y>>>16)+(U>>>16)+(n>>>16),X=o<<16|65535&n,Z=l<<16|65535&r,r=(65535&B)+(65535&S),l=(B>>>16)+(S>>>16)+(r>>>16),n=(65535&w)+(65535&U)+(l>>>16),o=(w>>>16)+(U>>>16)+(n>>>16),Y=o<<16|65535&n,q=l<<16|65535&r;r=(65535&N)+(65535&q),l=(N>>>16)+(q>>>16)+(r>>>16),n=(65535&g)+(65535&Y)+(l>>>16),o=(g>>>16)+(Y>>>16)+(n>>>16),this.h0h=o<<16|65535&n,this.h0l=l<<16|65535&r,r=(65535&j)+(65535&K),l=(j>>>16)+(K>>>16)+(r>>>16),n=(65535&J)+(65535&G)+(l>>>16),o=(J>>>16)+(G>>>16)+(n>>>16),this.h1h=o<<16|65535&n,this.h1l=l<<16|65535&r,r=(65535&z)+(65535&P),l=(z>>>16)+(P>>>16)+(r>>>16),n=(65535&x)+(65535&L)+(l>>>16),o=(x>>>16)+(L>>>16)+(n>>>16),this.h2h=o<<16|65535&n,this.h2l=l<<16|65535&r,r=(65535&R)+(65535&T),l=(R>>>16)+(T>>>16)+(r>>>16),n=(65535&H)+(65535&Q)+(l>>>16),o=(H>>>16)+(Q>>>16)+(n>>>16),this.h3h=o<<16|65535&n,this.h3l=l<<16|65535&r,r=(65535&I)+(65535&Z),l=(I>>>16)+(Z>>>16)+(r>>>16),n=(65535&E)+(65535&X)+(l>>>16),o=(E>>>16)+(X>>>16)+(n>>>16),this.h4h=o<<16|65535&n,this.h4l=l<<16|65535&r,r=(65535&m)+(65535&ht),l=(m>>>16)+(ht>>>16)+(r>>>16),n=(65535&V)+(65535&$)+(l>>>16),o=(V>>>16)+($>>>16)+(n>>>16),this.h5h=o<<16|65535&n,this.h5l=l<<16|65535&r,r=(65535&F)+(65535&st),l=(F>>>16)+(st>>>16)+(r>>>16),n=(65535&D)+(65535&tt)+(l>>>16),o=(D>>>16)+(tt>>>16)+(n>>>16),this.h6h=o<<16|65535&n,this.h6l=l<<16|65535&r,r=(65535&W)+(65535&et),l=(W>>>16)+(et>>>16)+(r>>>16),n=(65535&C)+(65535&it)+(l>>>16),o=(C>>>16)+(it>>>16)+(n>>>16),this.h7h=o<<16|65535&n,this.h7l=l<<16|65535&r},h.prototype.hex=function(){this.finalize();var h=this.h0h,t=this.h0l,s=this.h1h,i=this.h1l,e=this.h2h,r=this.h2l,l=this.h3h,n=this.h3l,o=this.h4h,f=this.h4l,u=this.h5h,y=this.h5l,c=this.h6h,p=this.h6l,b=this.h7h,d=this.h7l,_=this.bits,A=a[h>>28&15]+a[h>>24&15]+a[h>>20&15]+a[h>>16&15]+a[h>>12&15]+a[h>>8&15]+a[h>>4&15]+a[15&h]+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[15&t]+a[s>>28&15]+a[s>>24&15]+a[s>>20&15]+a[s>>16&15]+a[s>>12&15]+a[s>>8&15]+a[s>>4&15]+a[15&s]+a[i>>28&15]+a[i>>24&15]+a[i>>20&15]+a[i>>16&15]+a[i>>12&15]+a[i>>8&15]+a[i>>4&15]+a[15&i]+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[15&e]+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[15&r]+a[l>>28&15]+a[l>>24&15]+a[l>>20&15]+a[l>>16&15]+a[l>>12&15]+a[l>>8&15]+a[l>>4&15]+a[15&l];return _>=256&&(A+=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[15&n]),_>=384&&(A+=a[o>>28&15]+a[o>>24&15]+a[o>>20&15]+a[o>>16&15]+a[o>>12&15]+a[o>>8&15]+a[o>>4&15]+a[15&o]+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[15&f]+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[15&u]+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[15&y]),512==_&&(A+=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[15&c]+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[15&p]+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[15&b]+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[15&d]),A},h.prototype.toString=h.prototype.hex,h.prototype.digest=function(){this.finalize();var h=this.h0h,t=this.h0l,s=this.h1h,i=this.h1l,e=this.h2h,r=this.h2l,l=this.h3h,n=this.h3l,o=this.h4h,a=this.h4l,f=this.h5h,u=this.h5l,y=this.h6h,c=this.h6l,p=this.h7h,b=this.h7l,d=this.bits,_=[h>>24&255,h>>16&255,h>>8&255,255&h,t>>24&255,t>>16&255,t>>8&255,255&t,s>>24&255,s>>16&255,s>>8&255,255&s,i>>24&255,i>>16&255,i>>8&255,255&i,e>>24&255,e>>16&255,e>>8&255,255&e,r>>24&255,r>>16&255,r>>8&255,255&r,l>>24&255,l>>16&255,l>>8&255,255&l];return d>=256&&_.push(n>>24&255,n>>16&255,n>>8&255,255&n),d>=384&&_.push(o>>24&255,o>>16&255,o>>8&255,255&o,a>>24&255,a>>16&255,a>>8&255,255&a,f>>24&255,f>>16&255,f>>8&255,255&f,u>>24&255,u>>16&255,u>>8&255,255&u),512==d&&_.push(y>>24&255,y>>16&255,y>>8&255,255&y,c>>24&255,c>>16&255,c>>8&255,255&c,p>>24&255,p>>16&255,p>>8&255,255&p,b>>24&255,b>>16&255,b>>8&255,255&b),_},h.prototype.array=h.prototype.digest,h.prototype.arrayBuffer=function(){this.finalize();var h=this.bits,t=new ArrayBuffer(h/8),s=new DataView(t);return s.setUint32(0,this.h0h),s.setUint32(4,this.h0l),s.setUint32(8,this.h1h),s.setUint32(12,this.h1l),s.setUint32(16,this.h2h),s.setUint32(20,this.h2l),s.setUint32(24,this.h3h),h>=256&&s.setUint32(28,this.h3l),h>=384&&(s.setUint32(32,this.h4h),s.setUint32(36,this.h4l),s.setUint32(40,this.h5h),s.setUint32(44,this.h5l)),512==h&&(s.setUint32(48,this.h6h),s.setUint32(52,this.h6l),s.setUint32(56,this.h7h),s.setUint32(60,this.h7l)),t};var _=d(512);_.sha512=_,_.sha384=d(384),_.sha512_256=d(256),_.sha512_224=d(224),l?module.exports=_:(i.sha512=_.sha512,i.sha384=_.sha384,i.sha512_256=_.sha512_256,i.sha512_224=_.sha512_224,n&&define(function(){return _}))}(); \ No newline at end of file diff --git a/package.json b/package.json index 40e798a..8872081 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "js-sha512", - "version": "0.5.0", + "version": "0.6.0", "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": { diff --git a/src/sha512.js b/src/sha512.js index c599eb3..a568d9a 100644 --- a/src/sha512.js +++ b/src/sha512.js @@ -1,7 +1,7 @@ /* * [js-sha512]{@link https://github.com/emn178/js-sha512} * - * @version 0.5.0 + * @version 0.6.0 * @author Chen, Yi-Cyuan [emn178@gmail.com] * @copyright Chen, Yi-Cyuan 2014-2017 * @license MIT @@ -195,7 +195,7 @@ } this.bits = bits; - this.block = this.start = this.bytes = 0; + this.block = this.start = this.bytes = this.hBytes = 0; this.finalized = this.hashed = false; } @@ -274,6 +274,10 @@ this.start = i; } } + if (this.bytes > 4294967295) { + this.hBytes += this.bytes / 4294967296 << 0; + this.bytes = this.bytes % 4294967296; + } return this; }; @@ -300,6 +304,7 @@ blocks[25] = blocks[26] = blocks[27] = blocks[28] = blocks[29] = blocks[30] = blocks[31] = blocks[32] = 0; } + blocks[30] = this.hBytes << 3 | this.bytes >> 29; blocks[31] = this.bytes << 3; this.hash(); }; diff --git a/tests/test.js b/tests/test.js index c17f8d3..4ae42d1 100644 --- a/tests/test.js +++ b/tests/test.js @@ -316,6 +316,13 @@ }); }); }); + + context('when large size', function () { + var hash = algorithm.create(); + hash.bytes = 4294967295; + hash.update('any'); + expect(hash.hBytes).to.be(1); + }); }); }