|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
缺点:安全性不是太差了,还行,只要你充分利用系统自带的工具;唯一缺点就是执行效率慢,如何进行网站优化以后,效果会比较好。加密/*MD5Message-DigestAlgorithm-JavaScript
MODIFICATIONHISTORY:
1.016-Feb-2001-PhilFresle(sales@frez.co.uk)-InitialVersion(VB/ASPcode)
1.021-Feb-2001-EnricoMosanghini(erik504@yahoo.com)-JavaScriptporting
*/
functionMD5(sMessage){
functionRotateLeft(lValue,iShiftBits){return(lValue<<iShiftBits)|(lValue>>>(32-iShiftBits));}
functionAddUnsigned(lX,lY){
varlX4,lY4,lX8,lY8,lResult;
lX8=(lX&0x80000000);
lY8=(lY&0x80000000);
lX4=(lX&0x40000000);
lY4=(lY&0x40000000);
lResult=(lX&0x3FFFFFFF)+(lY&0x3FFFFFFF);
if(lX4&lY4)return(lResult^0x80000000^lX8^lY8);
if(lX4|lY4){
if(lResult&0x40000000)return(lResult^0xC0000000^lX8^lY8);
elsereturn(lResult^0x40000000^lX8^lY8);
}elsereturn(lResult^lX8^lY8);
}
functionF(x,y,z){return(x&y)|((~x)&z);}
functionG(x,y,z){return(x&z)|(y&(~z));}
functionH(x,y,z){return(x^y^z);}
functionI(x,y,z){return(y^(x|(~z)));}
functionFF(a,b,c,d,x,s,ac){
a=AddUnsigned(a,AddUnsigned(AddUnsigned(F(b,c,d),x),ac));
returnAddUnsigned(RotateLeft(a,s),b);
}
functionGG(a,b,c,d,x,s,ac){
a=AddUnsigned(a,AddUnsigned(AddUnsigned(G(b,c,d),x),ac));
returnAddUnsigned(RotateLeft(a,s),b);
}
functionHH(a,b,c,d,x,s,ac){
a=AddUnsigned(a,AddUnsigned(AddUnsigned(H(b,c,d),x),ac));
returnAddUnsigned(RotateLeft(a,s),b);
}
functionII(a,b,c,d,x,s,ac){
a=AddUnsigned(a,AddUnsigned(AddUnsigned(I(b,c,d),x),ac));
returnAddUnsigned(RotateLeft(a,s),b);
}
functionConvertToWordArray(sMessage){
varlWordCount;
varlMessageLength=sMessage.length;
varlNumberOfWords_temp1=lMessageLength+8;
varlNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1%64))/64;
varlNumberOfWords=(lNumberOfWords_temp2+1)*16;
varlWordArray=Array(lNumberOfWords-1);
varlBytePosition=0;
varlByteCount=0;
while(lByteCount<lMessageLength){
lWordCount=(lByteCount-(lByteCount%4))/4;
lBytePosition=(lByteCount%4)*8;
lWordArray[lWordCount]=(lWordArray[lWordCount]|(sMessage.charCodeAt(lByteCount)<<lBytePosition));
lByteCount++;
}
lWordCount=(lByteCount-(lByteCount%4))/4;
lBytePosition=(lByteCount%4)*8;
lWordArray[lWordCount]=lWordArray[lWordCount]|(0x80<<lBytePosition);
lWordArray[lNumberOfWords-2]=lMessageLength<<3;
lWordArray[lNumberOfWords-1]=lMessageLength>>>29;
returnlWordArray;
}
functionWordToHex(lValue){
varWordToHexValue="",WordToHexValue_temp="",lByte,lCount;
for(lCount=0;lCount<=3;lCount++){
lByte=(lValue>>>(lCount*8))&255;
WordToHexValue_temp="0"+lByte.toString(16);
WordToHexValue=WordToHexValue+WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);
}
returnWordToHexValue;
}
varx=Array();
vark,AA,BB,CC,DD,a,b,c,d
varS11=7,S12=12,S13=17,S14=22;
varS21=5,S22=9,S23=14,S24=20;
varS31=4,S32=11,S33=16,S34=23;
varS41=6,S42=10,S43=15,S44=21;
//Steps1and2.Appendpaddingbitsandlengthandconverttowords
x=ConvertToWordArray(sMessage);
//Step3.Initialise
a=0x67452301;b=0xEFCDAB89;c=0x98BADCFE;d=0x10325476;
//Step4.Processthemessagein16-wordblocks
for(k=0;k<x.length;k+=16){
AA=a;BB=b;CC=c;DD=d;
a=FF(a,b,c,d,x[k+0],S11,0xD76AA478);
d=FF(d,a,b,c,x[k+1],S12,0xE8C7B756);
c=FF(c,d,a,b,x[k+2],S13,0x242070DB);
b=FF(b,c,d,a,x[k+3],S14,0xC1BDCEEE);
a=FF(a,b,c,d,x[k+4],S11,0xF57C0FAF);
d=FF(d,a,b,c,x[k+5],S12,0x4787C62A);
c=FF(c,d,a,b,x[k+6],S13,0xA8304613);
b=FF(b,c,d,a,x[k+7],S14,0xFD469501);
a=FF(a,b,c,d,x[k+8],S11,0x698098D8);
d=FF(d,a,b,c,x[k+9],S12,0x8B44F7AF);
c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);
b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);
a=FF(a,b,c,d,x[k+12],S11,0x6B901122);
d=FF(d,a,b,c,x[k+13],S12,0xFD987193);
c=FF(c,d,a,b,x[k+14],S13,0xA679438E);
b=FF(b,c,d,a,x[k+15],S14,0x49B40821);
a=GG(a,b,c,d,x[k+1],S21,0xF61E2562);
d=GG(d,a,b,c,x[k+6],S22,0xC040B340);
c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);
b=GG(b,c,d,a,x[k+0],S24,0xE9B6C7AA);
a=GG(a,b,c,d,x[k+5],S21,0xD62F105D);
d=GG(d,a,b,c,x[k+10],S22,0x2441453);
c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);
由于ASP还是一种Script语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况; |
|