ASP网页编程之MD5加密的javascript完成例子
缺点:安全性不是太差了,还行,只要你充分利用系统自带的工具;唯一缺点就是执行效率慢,如何进行网站优化以后,效果会比较好。加密/*MD5Message-DigestAlgorithm-JavaScriptMODIFICATIONHISTORY:
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=(lWordArray|(sMessage.charCodeAt(lByteCount)<<lBytePosition));
lByteCount++;
}
lWordCount=(lByteCount-(lByteCount%4))/4;
lBytePosition=(lByteCount%4)*8;
lWordArray=lWordArray|(0x80<<lBytePosition);
lWordArray=lMessageLength<<3;
lWordArray=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,S11,0xD76AA478);
d=FF(d,a,b,c,x,S12,0xE8C7B756);
c=FF(c,d,a,b,x,S13,0x242070DB);
b=FF(b,c,d,a,x,S14,0xC1BDCEEE);
a=FF(a,b,c,d,x,S11,0xF57C0FAF);
d=FF(d,a,b,c,x,S12,0x4787C62A);
c=FF(c,d,a,b,x,S13,0xA8304613);
b=FF(b,c,d,a,x,S14,0xFD469501);
a=FF(a,b,c,d,x,S11,0x698098D8);
d=FF(d,a,b,c,x,S12,0x8B44F7AF);
c=FF(c,d,a,b,x,S13,0xFFFF5BB1);
b=FF(b,c,d,a,x,S14,0x895CD7BE);
a=FF(a,b,c,d,x,S11,0x6B901122);
d=FF(d,a,b,c,x,S12,0xFD987193);
c=FF(c,d,a,b,x,S13,0xA679438E);
b=FF(b,c,d,a,x,S14,0x49B40821);
a=GG(a,b,c,d,x,S21,0xF61E2562);
d=GG(d,a,b,c,x,S22,0xC040B340);
c=GG(c,d,a,b,x,S23,0x265E5A51);
b=GG(b,c,d,a,x,S24,0xE9B6C7AA);
a=GG(a,b,c,d,x,S21,0xD62F105D);
d=GG(d,a,b,c,x,S22,0x2441453);
c=GG(c,d,a,b,x,S23,0xD8A1E681);
由于ASP还是一种Script语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况; 多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。 以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。 如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助: 在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。 作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。 ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。 作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。 那么,ASP.Net有哪些改进呢?
页:
[1]