第一步:封装好js文件
export default {
md5 (string) {
function md5RotateLeft (lValue, iShiftBits) {
return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits))
}
function md5AddUnsigned (lX, lY) {
let 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 md5F (x, y, z) {
return (x & y) | ((~x) & z)
}
function md5G (x, y, z) {
return (x & z) | (y & (~z))
}
function md5H (x, y, z) {
return (x ^ y ^ z)
}
function md5I (x, y, z) {
return (y ^ (x | (~z)))
}
function md5FF (a, b, c, d, x, s, ac) {
a = md5AddUnsigned(a, md5AddUnsigned(md5AddUnsigned(md5F(b, c, d), x), ac))
return md5AddUnsigned(md5RotateLeft(a, s), b)
}
function md5GG (a, b, c, d, x, s, ac) {
a = md5AddUnsigned(a, md5AddUnsigned(md5AddUnsigned(md5G(b, c, d), x), ac))
return md5AddUnsigned(md5RotateLeft(a, s), b)
}
function md5HH (a, b, c, d, x, s, ac) {
a = md5AddUnsigned(a, md5AddUnsigned(md5AddUnsigned(md5H(b, c, d), x), ac))
return md5AddUnsigned(md5RotateLeft(a, s), b)
}
function md5II (a, b, c, d, x, s, ac) {
a = md5AddUnsigned(a, md5AddUnsigned(md5AddUnsigned(md5I(b, c, d), x), ac))
return md5AddUnsigned(md5RotateLeft(a, s), b)
}
function md5ConvertToWordArray (string) {
let lWordCount
let lMessageLength = string.length
let lNumberOfWordsTemp1 = lMessageLength + 8
let lNumberOfWordsTemp2 = (lNumberOfWordsTemp1 - (lNumberOfWordsTemp1 % 64)) / 64
let lNumberOfWords = (lNumberOfWordsTemp2 + 1) * 16
let lWordArray = Array(lNumberOfWords - 1)
let lBytePosition = 0
let lByteCount = 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