Improve performance.
parent
b249e417a7
commit
87364f594b
@ -1 +1 @@
|
||||
/tests/
|
||||
/test/
|
||||
|
@ -1,3 +1,7 @@
|
||||
# v0.1.1 / 2015-02-26
|
||||
|
||||
* Improve performance.
|
||||
|
||||
# v0.1.0 / 2015-02-23
|
||||
|
||||
* Initial release
|
||||
|
@ -1,9 +1,9 @@
|
||||
{
|
||||
"name": "js-sha3",
|
||||
"version": "0.1.0",
|
||||
"version": "0.1.1",
|
||||
"main": ["build/sha3.min.js"],
|
||||
"ignore": [
|
||||
"samples",
|
||||
"tests"
|
||||
"test"
|
||||
]
|
||||
}
|
||||
|
@ -1,5 +1,22 @@
|
||||
(function(m,E){var w="undefined"!=typeof module;w&&(m=global);var p="0123456789abcdef".split(""),F=[1,256,65536,16777216],r=[0,8,16,24],G=[0,1,62,28,27,36,44,6,55,20,3,10,43,25,39,41,45,15,21,8,18,2,61,56,14],A=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,
|
||||
32896,2147483648,2147483649,0,2147516424,2147483648],c=[],b=[],l=[],q=[],B=function(b){return n(b,224)},C=function(b){return n(b,256)},D=function(b){return n(b,384)},n=function(m,n){n===E&&(n=512);var x,d,u=!1,t=0,w=0,y=m.length,e,g,f,k,a,h,v=(1600-2*n)/32,z=4*v;for(a=0;50>a;++a)b[a]=0;x=0;do{c[0]=x;for(a=1;a<v+1;++a)c[a]=0;for(a=w;t<y&&a<z;++t)d=m.charCodeAt(t),128>d?c[a>>2]|=d<<r[a++&3]:(2048>d?c[a>>2]|=(192|d>>6)<<r[a++&3]:(55296>d||57344<=d?c[a>>2]|=(224|d>>12)<<r[a++&3]:(d=65536+((d&1023)<<10|
|
||||
m.charCodeAt(++t)&1023),c[a>>2]|=(240|d>>18)<<r[a++&3],c[a>>2]|=(128|d>>12&63)<<r[a++&3]),c[a>>2]|=(128|d>>6&63)<<r[a++&3]),c[a>>2]|=(128|d&63)<<r[a++&3]);w=a-z;t==y&&(c[a>>2]|=F[a&3],++t);x=c[v];t>y&&a<z&&(c[v-1]|=2147483648,u=!0);for(a=0;a<v;++a)b[a]^=c[a];for(d=0;24>d;d++){for(e=0;5>e;e++)f=2*e,q[f]=b[f]^b[f+10]^b[f+20]^b[f+30]^b[f+40],q[f+1]=b[f+1]^b[f+11]^b[f+21]^b[f+31]^b[f+41];for(e=0;5>e;e++)for(f=2*e,a=(e+4)%5*2,h=(e+1)%5*2,k=q[a]^(q[h]<<1|q[h+1]>>>31),h=q[a+1]^(q[h+1]<<1|q[h]>>>31),g=0;5>
|
||||
g;g++)a=f+10*g,b[a]^=k,b[a+1]^=h;for(e=0;5>e;e++)for(f=2*e,g=0;5>g;g++)a=f+10*g,h=2*g+(f+3*g)%5*10,k=G[e+5*g],0===k?(l[h]=b[a],l[h+1]=b[a+1]):32>k?(l[h]=b[a]<<k|b[a+1]>>>32-k,l[h+1]=b[a+1]<<k|b[a]>>>32-k):(l[h]=b[a+1]<<k-32|b[a]>>>64-k,l[h+1]=b[a]<<k-32|b[a+1]>>>64-k);for(e=0;5>e;e++)for(f=2*e,g=0;5>g;g++)a=f+10*g,h=2*((e+1)%5+5*g),k=2*((e+2)%5+5*g),b[a]=l[a]^~l[h]&l[k],b[a+1]=l[a+1]^~l[h+1]&l[k+1];b[0]^=A[2*d];b[1]^=A[2*d+1]}}while(!u);u="";a=0;for(d=n/32;a<d;++a)u+=p[b[a]>>4&15]+p[b[a]&15]+p[b[a]>>
|
||||
12&15]+p[b[a]>>8&15]+p[b[a]>>20&15]+p[b[a]>>16&15]+p[b[a]>>28&15]+p[b[a]>>24&15];return u};!m.JS_SHA3_TEST&&w?module.exports={sha3_512:n,sha3_384:D,sha3_256:C,sha3_224:B}:m&&(m.sha3_512=n,m.sha3_384=D,m.sha3_256=C,m.sha3_224=B)})(this);
|
||||
/*
|
||||
* js-sha3 v0.1.1
|
||||
* https://github.com/emn178/js-sha3
|
||||
*
|
||||
* Copyright 2015, emn178@gmail.com
|
||||
*
|
||||
* Licensed under the MIT license:
|
||||
* http://www.opensource.org/licenses/MIT
|
||||
*/
|
||||
(function(h,va){var qa="undefined"!=typeof module;qa&&(h=global);var b="0123456789abcdef".split(""),wa=[1,256,65536,16777216],y=[0,8,16,24],ra=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],f=[],a=[],
|
||||
sa=function(a){return l(a,224)},ta=function(a){return l(a,256)},ua=function(a){return l(a,384)},l=function(h,A){A===va&&(A=512);var g,k=!1,z=0,l=0,oa=h.length,c,d,e,m,n,p,q,r,t,u,v,w,x,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,aa,ba,ca,da,ea,fa,ga,ha,ia,ja,ka,la,ma,na,B=(1600-2*A)/32,pa=4*B;for(c=0;50>c;++c)a[c]=0;g=0;do{f[0]=g;for(c=1;c<B+1;++c)f[c]=0;for(c=l;z<oa&&c<pa;++z)g=h.charCodeAt(z),128>g?f[c>>2]|=g<<y[c++&3]:(2048>g?f[c>>2]|=(192|g>>6)<<y[c++&3]:(55296>g||57344<=g?f[c>>2]|=(224|g>>
|
||||
12)<<y[c++&3]:(g=65536+((g&1023)<<10|h.charCodeAt(++z)&1023),f[c>>2]|=(240|g>>18)<<y[c++&3],f[c>>2]|=(128|g>>12&63)<<y[c++&3]),f[c>>2]|=(128|g>>6&63)<<y[c++&3]),f[c>>2]|=(128|g&63)<<y[c++&3]);l=c-pa;z==oa&&(f[c>>2]|=wa[c&3],++z);g=f[B];z>oa&&c<pa&&(f[B-1]|=2147483648,k=!0);for(c=0;c<B;++c)a[c]^=f[c];for(c=0;48>c;c+=2)m=a[0]^a[10]^a[20]^a[30]^a[40],n=a[1]^a[11]^a[21]^a[31]^a[41],p=a[2]^a[12]^a[22]^a[32]^a[42],q=a[3]^a[13]^a[23]^a[33]^a[43],r=a[4]^a[14]^a[24]^a[34]^a[44],t=a[5]^a[15]^a[25]^a[35]^a[45],
|
||||
u=a[6]^a[16]^a[26]^a[36]^a[46],v=a[7]^a[17]^a[27]^a[37]^a[47],w=a[8]^a[18]^a[28]^a[38]^a[48],x=a[9]^a[19]^a[29]^a[39]^a[49],d=w^(p<<1|q>>>31),e=x^(q<<1|p>>>31),a[0]^=d,a[1]^=e,a[10]^=d,a[11]^=e,a[20]^=d,a[21]^=e,a[30]^=d,a[31]^=e,a[40]^=d,a[41]^=e,d=m^(r<<1|t>>>31),e=n^(t<<1|r>>>31),a[2]^=d,a[3]^=e,a[12]^=d,a[13]^=e,a[22]^=d,a[23]^=e,a[32]^=d,a[33]^=e,a[42]^=d,a[43]^=e,d=p^(u<<1|v>>>31),e=q^(v<<1|u>>>31),a[4]^=d,a[5]^=e,a[14]^=d,a[15]^=e,a[24]^=d,a[25]^=e,a[34]^=d,a[35]^=e,a[44]^=d,a[45]^=e,d=r^(w<<
|
||||
1|x>>>31),e=t^(x<<1|w>>>31),a[6]^=d,a[7]^=e,a[16]^=d,a[17]^=e,a[26]^=d,a[27]^=e,a[36]^=d,a[37]^=e,a[46]^=d,a[47]^=e,d=u^(m<<1|n>>>31),e=v^(n<<1|m>>>31),a[8]^=d,a[9]^=e,a[18]^=d,a[19]^=e,a[28]^=d,a[29]^=e,a[38]^=d,a[39]^=e,a[48]^=d,a[49]^=e,d=a[0],e=a[1],W=a[11]<<4|a[10]>>>28,X=a[10]<<4|a[11]>>>28,E=a[20]<<3|a[21]>>>29,F=a[21]<<3|a[20]>>>29,ka=a[31]<<9|a[30]>>>23,la=a[30]<<9|a[31]>>>23,S=a[40]<<18|a[41]>>>14,T=a[41]<<18|a[40]>>>14,K=a[2]<<1|a[3]>>>31,L=a[3]<<1|a[2]>>>31,m=a[13]<<12|a[12]>>>20,n=a[12]<<
|
||||
12|a[13]>>>20,Y=a[22]<<10|a[23]>>>22,Z=a[23]<<10|a[22]>>>22,G=a[33]<<13|a[32]>>>19,H=a[32]<<13|a[33]>>>19,ma=a[42]<<2|a[43]>>>30,na=a[43]<<2|a[42]>>>30,ea=a[5]<<30|a[4]>>>2,fa=a[4]<<30|a[5]>>>2,M=a[14]<<6|a[15]>>>26,N=a[15]<<6|a[14]>>>26,p=a[25]<<11|a[24]>>>21,q=a[24]<<11|a[25]>>>21,aa=a[34]<<15|a[35]>>>17,ba=a[35]<<15|a[34]>>>17,I=a[45]<<29|a[44]>>>3,J=a[44]<<29|a[45]>>>3,w=a[6]<<28|a[7]>>>4,x=a[7]<<28|a[6]>>>4,ga=a[17]<<23|a[16]>>>9,ha=a[16]<<23|a[17]>>>9,O=a[26]<<25|a[27]>>>7,P=a[27]<<25|a[26]>>>
|
||||
7,r=a[36]<<21|a[37]>>>11,t=a[37]<<21|a[36]>>>11,ca=a[47]<<24|a[46]>>>8,da=a[46]<<24|a[47]>>>8,U=a[8]<<27|a[9]>>>5,V=a[9]<<27|a[8]>>>5,C=a[18]<<20|a[19]>>>12,D=a[19]<<20|a[18]>>>12,ia=a[29]<<7|a[28]>>>25,ja=a[28]<<7|a[29]>>>25,Q=a[38]<<8|a[39]>>>24,R=a[39]<<8|a[38]>>>24,u=a[48]<<14|a[49]>>>18,v=a[49]<<14|a[48]>>>18,a[0]=d^~m&p,a[1]=e^~n&q,a[10]=w^~C&E,a[11]=x^~D&F,a[20]=K^~M&O,a[21]=L^~N&P,a[30]=U^~W&Y,a[31]=V^~X&Z,a[40]=ea^~ga&ia,a[41]=fa^~ha&ja,a[2]=m^~p&r,a[3]=n^~q&t,a[12]=C^~E&G,a[13]=D^~F&H,a[22]=
|
||||
M^~O&Q,a[23]=N^~P&R,a[32]=W^~Y&aa,a[33]=X^~Z&ba,a[42]=ga^~ia&ka,a[43]=ha^~ja&la,a[4]=p^~r&u,a[5]=q^~t&v,a[14]=E^~G&I,a[15]=F^~H&J,a[24]=O^~Q&S,a[25]=P^~R&T,a[34]=Y^~aa&ca,a[35]=Z^~ba&da,a[44]=ia^~ka&ma,a[45]=ja^~la&na,a[6]=r^~u&d,a[7]=t^~v&e,a[16]=G^~I&w,a[17]=H^~J&x,a[26]=Q^~S&K,a[27]=R^~T&L,a[36]=aa^~ca&U,a[37]=ba^~da&V,a[46]=ka^~ma&ea,a[47]=la^~na&fa,a[8]=u^~d&m,a[9]=v^~e&n,a[18]=I^~w&C,a[19]=J^~x&D,a[28]=S^~K&M,a[29]=T^~L&N,a[38]=ca^~U&W,a[39]=da^~V&X,a[48]=ma^~ea&ga,a[49]=na^~fa&ha,a[0]^=ra[c],
|
||||
a[1]^=ra[c+1]}while(!k);k=""+(b[a[0]>>4&15]+b[a[0]&15]+b[a[0]>>12&15]+b[a[0]>>8&15]+b[a[0]>>20&15]+b[a[0]>>16&15]+b[a[0]>>28&15]+b[a[0]>>24&15]+b[a[1]>>4&15]+b[a[1]&15]+b[a[1]>>12&15]+b[a[1]>>8&15]+b[a[1]>>20&15]+b[a[1]>>16&15]+b[a[1]>>28&15]+b[a[1]>>24&15]+b[a[2]>>4&15]+b[a[2]&15]+b[a[2]>>12&15]+b[a[2]>>8&15]+b[a[2]>>20&15]+b[a[2]>>16&15]+b[a[2]>>28&15]+b[a[2]>>24&15]+b[a[3]>>4&15]+b[a[3]&15]+b[a[3]>>12&15]+b[a[3]>>8&15]+b[a[3]>>20&15]+b[a[3]>>16&15]+b[a[3]>>28&15]+b[a[3]>>24&15]+b[a[4]>>4&15]+b[a[4]&
|
||||
15]+b[a[4]>>12&15]+b[a[4]>>8&15]+b[a[4]>>20&15]+b[a[4]>>16&15]+b[a[4]>>28&15]+b[a[4]>>24&15]+b[a[5]>>4&15]+b[a[5]&15]+b[a[5]>>12&15]+b[a[5]>>8&15]+b[a[5]>>20&15]+b[a[5]>>16&15]+b[a[5]>>28&15]+b[a[5]>>24&15]+b[a[6]>>4&15]+b[a[6]&15]+b[a[6]>>12&15]+b[a[6]>>8&15]+b[a[6]>>20&15]+b[a[6]>>16&15]+b[a[6]>>28&15]+b[a[6]>>24&15]);256<=A&&(k+=b[a[7]>>4&15]+b[a[7]&15]+b[a[7]>>12&15]+b[a[7]>>8&15]+b[a[7]>>20&15]+b[a[7]>>16&15]+b[a[7]>>28&15]+b[a[7]>>24&15]);384<=A&&(k+=b[a[8]>>4&15]+b[a[8]&15]+b[a[8]>>12&15]+
|
||||
b[a[8]>>8&15]+b[a[8]>>20&15]+b[a[8]>>16&15]+b[a[8]>>28&15]+b[a[8]>>24&15]+b[a[9]>>4&15]+b[a[9]&15]+b[a[9]>>12&15]+b[a[9]>>8&15]+b[a[9]>>20&15]+b[a[9]>>16&15]+b[a[9]>>28&15]+b[a[9]>>24&15]+b[a[10]>>4&15]+b[a[10]&15]+b[a[10]>>12&15]+b[a[10]>>8&15]+b[a[10]>>20&15]+b[a[10]>>16&15]+b[a[10]>>28&15]+b[a[10]>>24&15]+b[a[11]>>4&15]+b[a[11]&15]+b[a[11]>>12&15]+b[a[11]>>8&15]+b[a[11]>>20&15]+b[a[11]>>16&15]+b[a[11]>>28&15]+b[a[11]>>24&15]);512==A&&(k+=b[a[12]>>4&15]+b[a[12]&15]+b[a[12]>>12&15]+b[a[12]>>8&15]+
|
||||
b[a[12]>>20&15]+b[a[12]>>16&15]+b[a[12]>>28&15]+b[a[12]>>24&15]+b[a[13]>>4&15]+b[a[13]&15]+b[a[13]>>12&15]+b[a[13]>>8&15]+b[a[13]>>20&15]+b[a[13]>>16&15]+b[a[13]>>28&15]+b[a[13]>>24&15]+b[a[14]>>4&15]+b[a[14]&15]+b[a[14]>>12&15]+b[a[14]>>8&15]+b[a[14]>>20&15]+b[a[14]>>16&15]+b[a[14]>>28&15]+b[a[14]>>24&15]+b[a[15]>>4&15]+b[a[15]&15]+b[a[15]>>12&15]+b[a[15]>>8&15]+b[a[15]>>20&15]+b[a[15]>>16&15]+b[a[15]>>28&15]+b[a[15]>>24&15]);return k};!h.JS_SHA3_TEST&&qa?module.exports={sha3_512:l,sha3_384:ua,sha3_256:ta,
|
||||
sha3_224:sa}:h&&(h.sha3_512=l,h.sha3_384=ua,h.sha3_256=ta,h.sha3_224=sa)})(this);
|
||||
|
Loading…
Reference in New Issue