关于一个SHA1加密函数调用的问题!
「已注销」 2015-09-04 07:38:17 从SHA1加密函数代码里面找不到所调用的参数变量,在下刚学JS不久,请教高手指点指点,非常感谢!
【A】JS文件调用代码
return B=SHA1(A,!0)
【B】JS文件SHA1函数
var SHA1=function(){
//【B】
function b(a){
return g(h(f(a),a.length*8))
}
//【C】
function c(a){
var b="",c;
for(var d in a)c=a.charCodeAt(d),b+=(c>>4&15).toString(16)+(c&15).toString(16);
return b
}
//【D】
function d(a){
if(window.BASE64)return BASE64.encode(a)
}
//【E】
function e(b){
var c="",d=-1,e,f;
while(++d<b.length)e=b.charCodeAt(d),f=d+1<b.length?b.charCodeAt(d+1):0,55296<=e&&e<=56319&&56320<=f&&f<=57343&&(e=65536+((e&1023)<<10)+(f&1023),d++),e<=127?c+=a(e):e<=2047?c+=a(192|e>>6&31,128|e&63):e<=65535?c+=a(224|e>>12&15,128|e>>6&63,128|e&63):e<=2097151&&(c+=a(240|e>>18&7,128|e>>12&63,128|e>>6&63,128|e&63));
return c
}
//【F】
function f(a){
var b=[];
for(var c=0;
c<a.length*8;
c+=8)b[c>>5]|=(a.charCodeAt(c/8)&255)<<24-c%32;
return b
}
//【G】
function g(b){
var c="";
for(var d=0;
d<b.length*32;
d+=8)c+=a(b[d>>5]>>24-d%32&255);
return c
}
//【H】
function h(a,b){
a[b>>5]|=128<<24-b%32,a[(b+64>>9<<4)+15]=b;
var c=[],d=1732584193,e=-271733879,f=-1732584194,g=271733878,h=-1009589776;
for(var m=0;
m<a.length;
m+=16){
var n=d,o=e,p=f,q=g,r=h;
for(var s=0;
s<80;
s++){
s<16?c[s]=a[m+s]:c[s]=l(c[s-3]^c[s-8]^c[s-14]^c[s-16],1);
var t=k(k(l(d,5),i(s,e,f,g)),k(k(h,c[s]),j(s)));
h=g,g=f,f=l(e,30),e=d,d=t
}
d=k(d,n),e=k(e,o),f=k(f,p),g=k(g,q),h=k(h,r)
}
return[d,e,f,g,h]
}
//【I】
function i(a,b,c,d){
return a<20?b&c|~b&d:a<40?b^c^d:a<60?b&c|b&d|c&d:b^c^d
}
//【J】
function j(a){
return a<20?1518500249:a<40?1859775393:a<60?-1894007588:-899497514
}
//【K】
function k(a,b){
var c=(a&65535)+(b&65535),d=(a>>16)+(b>>16)+(c>>16);
return d<<16|c&65535
}
//【L】
function l(a,b){
return a<<b|a>>>32-b
}
var a=String.fromCharCode;
return function(a,f){
var g=b(e(a));
return f?d(g):c(g)
}
}