1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > MD5加密的javascript实现例子

MD5加密的javascript实现例子

时间:2024-01-28 09:52:32

相关推荐

MD5加密的javascript实现例子

MD5加密的javascript实现例子,MD5加密的javascript实现例子

/* MD5 Message-Digest Algorithm -JavaScript

MODIFICATION HISTORY:

1.0 16-Feb-2001 - Phil Fresle ([email protected]) - Initial Version (VB/ASPcode)

1.0 21-Feb-2001 - Enrico Mosanghini ([email protected]) -JavaScript porting

*/

function MD5(sMessage) {

function RotateLeft(lValue, iShiftBits) { return (lValue<<iShiftBits) | (lValue(32-iShiftBits)); }

function AddUnsigned(lX,lY) {

var lX4,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);

else return (lResult ^ 0x40000000 ^ lX8 ^ lY8);

} else return (lResult ^ lX8 ^ lY8);

}

function F(x,y,z) { return (x & y) | ((~x) & z); }

function G(x,y,z) { return (x & z) | (y & (~z)); }

function H(x,y,z) { return (x ^ y ^ z); }

function I(x,y,z) { return (y ^ (x | (~z))); }

function FF(a,b,c,d,x,s,ac) {

a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));

return AddUnsigned(RotateLeft(a, s), b);

}

function GG(a,b,c,d,x,s,ac) {

a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));

return AddUnsigned(RotateLeft(a, s), b);

}

function HH(a,b,c,d,x,s,ac) {

a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));

return AddUnsigned(RotateLeft(a, s), b);

}

function II(a,b,c,d,x,s,ac) {

a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));

return AddUnsigned(RotateLeft(a, s), b);

}

function ConvertToWordArray(sMessage) {

var lWordCount;

var lMessageLength = ;

var lNumberOfWords_temp1=lMessageLength + 8;

var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;

var lNumberOfWords = (lNumberOfWords_temp2+1)*16;

var lWordArray=Array(lNumberOfWords-1);

var lBytePosition = 0;

var lByteCount = 0;

while ( lByteCount < lMessageLength ) {

lWordCount = (lByteCount-(lByteCount % 4))/4;

lBytePosition = (lByteCount % 4)*8;

lWordArray[lWordCount] = (lWordArray[lWordCount] | (()&&));

lByteCount++;

}

lWordCount = (lByteCount-(lByteCount % 4))/4;

lBytePosition = (lByteCount % 4)*8;

lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);

lWordArray[lNumberOfWords-2] = lMessageLength<<3;

lWordArray[lNumberOfWords-1] = lMessageLength29;

return lWordArray;

}

function WordToHex(lValue) {

var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;

for (lCount = 0;lCount<=3;lCount++) {

lByte = (lValue(lCount*8)) & 255;

WordToHexValue_temp = "0" + ();

WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);

}

return WordToHexValue;

}

var x=Array();

var k,AA,BB,CC,DD,a,b,c,d

var S11=7, S12=12, S13=17, S14=22;

var S21=5, S22=9 , S23=14, S24=20;

var S31=4, S32=11, S33=16, S34=23;

var S41=6, S42=10, S43=15, S44=21;

// Steps 1 and 2. Append padding bits and length and convert towords

x = ConvertToWordArray(sMessage);

// Step 3. Initialise

a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;

// Step 4. Process the message in 16-word blocks

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。