创建一个js文件将下方代码复制过去
function md5(string) {
varx = Array();
var k, 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;
string= Utf8Encode(string);
x = ConvertToWordArray(string);
a =0x67452301;
b =0xEFCDAB89;
c =0x98BADCFE;
d =0x10325476;
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);
b = GG(b, c, d, a, x[k +4], S24,0xE7D3FBC8);
a = GG(a, b, c, d, x[k +9], S21,0x21E1CDE6);
d = GG(d, a, b, c, x[k +14], S22,0xC33707D6);
c = GG(c, d, a, b, x[k +3], S23,0xF4D50D87);
b = GG(b, c, d, a, x[k +8], S24,0x455A14ED);
a = GG(a, b, c, d, x[k +13], S21,0xA9E3E905);
d = GG(d, a, b, c, x[k +2], S22,0xFCEFA3F8);
c = GG(c, d, a, b, x[k +7], S23,0x676F02D9);
b = GG(b, c, d, a, x[k +12], S24,0x8D2A4C8A);
a = HH(a, b, c, d, x[k +5], S31,0xFFFA3942);
d = HH(d, a, b, c, x[k +8], S32,0x8771F681);
c = HH(c, d, a, b, x[k +11], S33,0x6D9D6122);
b = HH(b, c, d, a, x[k +14], S34,0xFDE5380C);
a = HH(a, b, c, d, x[k +1], S31,0xA4BEEA44);
d = HH(d, a, b, c, x[k +4], S32,0x4BDECFA9);
c = HH(c, d, a, b, x[k +7], S33,0xF6BB4B60);
b = HH(b, c, d, a, x[k +10], S34,0xBEBFBC70);
a = HH(a, b, c, d, x[k +13], S31,0x289B7EC6);
d = HH(d, a, b, c, x[k +0], S32,0xEAA127FA);
c = HH(c, d, a, b, x[k +3], S33,0xD4EF3085);
b = HH(b, c, d, a, x[k +6], S34,0x4881D05);
a = HH(a, b, c, d, x[k +9], S31,0xD9D4D039);
d = HH(d, a, b, c, x[k +12], S32,0xE6DB99E5);
c = HH(c, d, a, b, x[k +15], S33,0x1FA27CF8);
b = HH(b, c, d, a, x[k +2], S34,0xC4AC5665);
a = II(a, b, c, d, x[k +0], S41,0xF4292244);
d = II(d, a, b, c, x[k +7], S42,0x432AFF97);
c = II(c, d, a, b, x[k +14], S43,0xAB9423A7);
b = II(b, c, d, a, x[k +5], S44,0xFC93A039);
a = II(a, b, c, d, x[k +12], S41,0x655B59C3);
d = II(d, a, b, c, x[k +3], S42,0x8F0CCC92);
c = II(c, d, a, b, x[k +10], S43,0xFFEFF47D);
b = II(b, c, d, a, x[k +1], S44,0x85845DD1);
a = II(a, b, c, d, x[k +8], S41,0x6FA87E4F);
d = II(d, a, b, c, x[k +15], S42,0xFE2CE6E0);
c = II(c, d, a, b, x[k +6], S43,0xA3014314);
b = II(b, c, d, a, x[k +13], S44,0x4E0811A1);
a = II(a, b, c, d, x[k +4], S41,0xF7537E82);
d = II(d, a, b, c, x[k +11], S42,0xBD3AF235);
c = II(c, d, a, b, x[k +2], S43,0x2AD7D2BB);
b = II(b, c, d, a, x[k +9], S44,0xEB86D391);
a = AddUnsigned(a, AA);
b = AddUnsigned(b, BB);
c = AddUnsigned(c, CC);
d = AddUnsigned(d, DD);
}
vartemp = WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d);
return temp.toUpperCase();
}
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(string) {
var lWordCount;
varlMessageLength =string.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] | (string.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;
return lWordArray;
}
function WordToHex(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);
}
return WordToHexValue;
}
function Utf8Encode(string) {
varutftext ="";
for(varn =0; n
varc =string.charCodeAt(n);
if(c <128) {
utftext += String.fromCharCode(c);
} elseif((c >127) && (c <2048)) {
utftext += String.fromCharCode((c >>6) |192);
utftext += String.fromCharCode((c &63) |128);
} else {
utftext += String.fromCharCode((c >>12) |224);
utftext += String.fromCharCode(((c >>6) &63) |128);
utftext += String.fromCharCode((c &63) |128);
}
}
return utftext;
}
module.exports = {
md5: md5
}
在需要用md5加密的地方,引入文件
const MD5 = require('./md5.js')