* Support byte array input.
* Remove ascii parameter. * Improve performance. * Add test cases.pull/2/merge
parent
4122482ac4
commit
72f01d0043
@ -1,3 +1,6 @@
|
|||||||
(function(t,y){var v="0123456789abcdef".split(""),w={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,b:11,c:12,d:13,e:14,f:15,A:10,B:11,C:12,D:13,E:14,F:15},x=function(e){var a;a:{for(a=e.length;a--;)if(127<e.charCodeAt(a)){a=!0;break a}a=!1}if(a){var c=encodeURIComponent(e);e=[];var d=0;a=0;for(var f=c.length;d<f;++d){var r=c.charCodeAt(d);e[a>>2]=37==r?e[a>>2]|(w[c.charAt(++d)]<<4|w[c.charAt(++d)])<<(3-a%4<<3):e[a>>2]|r<<(3-a%4<<3);++a}c=(a+8>>6)+1<<4;d=a>>2;e[d]|=128<<(3-a%4<<3);for(d+=1;d<c;++d)e[d]=
|
(function(x,C){"undefined"!=typeof module&&(x=global);var v="undefined"!=typeof Uint8Array,k="0123456789abcdef".split(""),B=[-2147483648,8388608,32768,128],w=[24,16,8,0],b=[];Array.prototype.__ARRAY__=!0;v&&(Uint8Array.prototype.__ARRAY__=!0);v=function(y){var n,p,q,r,t,m=0,x=!1,a,l,h,u=0,v=0,A=0,z=y.length;n=1732584193;p=4023233417;q=2562383102;r=271733878;t=3285377520;do{b[0]=m;b[16]=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]=0;if(y.__ARRAY__)for(a=v;u<z&&64>
|
||||||
0;e[c-1]=a<<3}else{a=e.length;d=(a+8>>6)+1<<4;c=[];for(f=0;f<d;++f)c[f]=0;for(f=0;f<a;++f)c[f>>2]|=e.charCodeAt(f)<<(3-f%4<<3);c[f>>2]|=128<<(3-f%4<<3);c[d-1]=a<<3;e=c}a=1732584193;for(var d=4023233417,c=2562383102,f=271733878,r=3285377520,u=0,t=e.length;u<t;u+=16){for(var n=[],b=0;16>b;++b)n[b]=e[u+b];for(b=16;80>b;++b)n[b]=p(n[b-3]^n[b-8]^n[b-14]^n[b-16],1);for(var m=a,h=d,k=c,l=f,q=r,g,b=0;20>b;++b)g=h&k|~h&l,g=p(m,5)+g+q+1518500249+n[b],q=l,l=k,k=p(h,30),h=m,m=g;for(;40>b;++b)g=h^k^l,g=p(m,5)+
|
a;++u)b[a>>2]|=y[u]<<w[a++&3];else for(a=v;u<z&&64>a;++u)m=y.charCodeAt(u),128>m?b[a>>2]|=m<<w[a++&3]:(2048>m?b[a>>2]|=(192|m>>6)<<w[a++&3]:(55296>m||57344<=m?b[a>>2]|=(224|m>>12)<<w[a++&3]:(m=65536+((m&1023)<<10|y.charCodeAt(++u)&1023),b[a>>2]|=(240|m>>18)<<w[a++&3],b[a>>2]|=(128|m>>12&63)<<w[a++&3]),b[a>>2]|=(128|m>>6&63)<<w[a++&3]),b[a>>2]|=(128|m&63)<<w[a++&3]);A+=a-v;v=a-64;u==z&&(b[a>>2]|=B[a&3],++u);m=b[16];u>z&&56>a&&(b[15]=A<<3,x=!0);for(h=16;80>h;++h)a=b[h-3]^b[h-8]^b[h-14]^b[h-16],b[h]=
|
||||||
g+q+1859775393+n[b],q=l,l=k,k=p(h,30),h=m,m=g;for(;60>b;++b)g=h&k|h&l|k&l,g=p(m,5)+g+q+2400959708+n[b],q=l,l=k,k=p(h,30),h=m,m=g;for(;80>b;++b)g=h^k^l,g=p(m,5)+g+q+3395469782+n[b],q=l,l=k,k=p(h,30),h=m,m=g;a+=m;d+=h;c+=k;f+=l;r+=q}return s(a)+s(d)+s(c)+s(f)+s(r)},p=function(e,a){return e<<a|e>>>32-a},s=function(e){for(var a="",c=0;4>c;c++)var d=3-c<<3,a=a+(v[e>>d+4&15]+v[e>>d&15]);return a};"undefined"!=typeof module?module.exports=x:t&&(t.sha1=x)})(this);
|
a<<1|a>>>31;var c=n,d=p,e=q,f=r,g=t;for(h=0;20>h;h+=5)l=d&e|~d&f,a=c<<5|c>>>27,g=a+l+g+1518500249+b[h]<<0,d=d<<30|d>>>2,l=c&d|~c&e,a=g<<5|g>>>27,f=a+l+f+1518500249+b[h+1]<<0,c=c<<30|c>>>2,l=g&c|~g&d,a=f<<5|f>>>27,e=a+l+e+1518500249+b[h+2]<<0,g=g<<30|g>>>2,l=f&g|~f&c,a=e<<5|e>>>27,d=a+l+d+1518500249+b[h+3]<<0,f=f<<30|f>>>2,l=e&f|~e&g,a=d<<5|d>>>27,c=a+l+c+1518500249+b[h+4]<<0,e=e<<30|e>>>2;for(;40>h;h+=5)l=d^e^f,a=c<<5|c>>>27,g=a+l+g+1859775393+b[h]<<0,d=d<<30|d>>>2,l=c^d^e,a=g<<5|g>>>27,f=a+l+f+1859775393+
|
||||||
|
b[h+1]<<0,c=c<<30|c>>>2,l=g^c^d,a=f<<5|f>>>27,e=a+l+e+1859775393+b[h+2]<<0,g=g<<30|g>>>2,l=f^g^c,a=e<<5|e>>>27,d=a+l+d+1859775393+b[h+3]<<0,f=f<<30|f>>>2,l=e^f^g,a=d<<5|d>>>27,c=a+l+c+1859775393+b[h+4]<<0,e=e<<30|e>>>2;for(;60>h;h+=5)l=d&e|d&f|e&f,a=c<<5|c>>>27,g=a+l+g-1894007588+b[h]<<0,d=d<<30|d>>>2,l=c&d|c&e|d&e,a=g<<5|g>>>27,f=a+l+f-1894007588+b[h+1]<<0,c=c<<30|c>>>2,l=g&c|g&d|c&d,a=f<<5|f>>>27,e=a+l+e-1894007588+b[h+2]<<0,g=g<<30|g>>>2,l=f&g|f&c|g&c,a=e<<5|e>>>27,d=a+l+d-1894007588+b[h+3]<<0,
|
||||||
|
f=f<<30|f>>>2,l=e&f|e&g|f&g,a=d<<5|d>>>27,c=a+l+c-1894007588+b[h+4]<<0,e=e<<30|e>>>2;for(;80>h;h+=5)l=d^e^f,a=c<<5|c>>>27,g=a+l+g-899497514+b[h]<<0,d=d<<30|d>>>2,l=c^d^e,a=g<<5|g>>>27,f=a+l+f-899497514+b[h+1]<<0,c=c<<30|c>>>2,l=g^c^d,a=f<<5|f>>>27,e=a+l+e-899497514+b[h+2]<<0,g=g<<30|g>>>2,l=f^g^c,a=e<<5|e>>>27,d=a+l+d-899497514+b[h+3]<<0,f=f<<30|f>>>2,l=e^f^g,a=d<<5|d>>>27,c=a+l+c-899497514+b[h+4]<<0,e=e<<30|e>>>2;n=n+c<<0;p=p+d<<0;q=q+e<<0;r=r+f<<0;t=t+g<<0}while(!x);return k[n>>28&15]+k[n>>24&15]+
|
||||||
|
k[n>>20&15]+k[n>>16&15]+k[n>>12&15]+k[n>>8&15]+k[n>>4&15]+k[n&15]+k[p>>28&15]+k[p>>24&15]+k[p>>20&15]+k[p>>16&15]+k[p>>12&15]+k[p>>8&15]+k[p>>4&15]+k[p&15]+k[q>>28&15]+k[q>>24&15]+k[q>>20&15]+k[q>>16&15]+k[q>>12&15]+k[q>>8&15]+k[q>>4&15]+k[q&15]+k[r>>28&15]+k[r>>24&15]+k[r>>20&15]+k[r>>16&15]+k[r>>12&15]+k[r>>8&15]+k[r>>4&15]+k[r&15]+k[t>>28&15]+k[t>>24&15]+k[t>>20&15]+k[t>>16&15]+k[t>>12&15]+k[t>>8&15]+k[t>>4&15]+k[t&15]};x.JS_SHA1_TEST||"undefined"==typeof module?x&&(x.sha1=v):module.exports=v})(this);
|
||||||
|
@ -1,3 +1,11 @@
|
|||||||
sha1 = require('../src/sha1.js');
|
sha1 = require('../src/sha1.js');
|
||||||
expect = require('expect.js');
|
expect = require('expect.js');
|
||||||
require('./test.js');
|
require('./test.js');
|
||||||
|
|
||||||
|
delete require.cache[require.resolve('../src/sha1.js')]
|
||||||
|
delete require.cache[require.resolve('./test.js')]
|
||||||
|
sha1 = null;
|
||||||
|
|
||||||
|
JS_SHA1_TEST = true;
|
||||||
|
require('../src/sha1.js');
|
||||||
|
require('./test.js');
|
||||||
|
Loading…
Reference in New Issue