在解ob混淆时 发现其中作者实现的几种哈希算法,觉得写的不错,遂拿来分享给大家
function hash_md5(_0x5be8e2) {
function _0x3cf213(_0x5cf6ec, _0x3082d4) {
return _0x5cf6ec << _0x3082d4 | _0x5cf6ec >>> 32 - _0x3082d4;
}
function _0xddae70(_0x4b1946, _0x17d389) {
var _0x76617c, _0x352aac, _0x40ca4a, _0x1a2ac6, _0x2dec5e;
_0x40ca4a = _0x4b1946 & 2147483648;
_0x1a2ac6 = _0x17d389 & 2147483648;
_0x76617c = _0x4b1946 & 1073741824;
_0x352aac = _0x17d389 & 1073741824;
_0x2dec5e = (_0x4b1946 & 1073741823) + (_0x17d389 & 1073741823);
if (_0x76617c & _0x352aac) {
return _0x2dec5e ^ 2147483648 ^ _0x40ca4a ^ _0x1a2ac6;
}
if (_0x76617c | _0x352aac) {
if (_0x2dec5e & 1073741824) {
return _0x2dec5e ^ 3221225472 ^ _0x40ca4a ^ _0x1a2ac6;
} else {
return _0x2dec5e ^ 1073741824 ^ _0x40ca4a ^ _0x1a2ac6;
}
} else {
return _0x2dec5e ^ _0x40ca4a ^ _0x1a2ac6;
}
}
function _0x372249(_0x17b477, _0x20dd3a, _0x4dfa35) {
return _0x17b477 & _0x20dd3a | ~_0x17b477 & _0x4dfa35;
}
function _0x3dc6d8(_0xa646f1, _0x4f2fd7, _0x334ce6) {
return _0xa646f1 & _0x334ce6 | _0x4f2fd7 & ~_0x334ce6;
}
function _0x24f9c0(_0x3ca345, _0xd8d8c, _0x94d61) {
return _0x3ca345 ^ _0xd8d8c ^ _0x94d61;
}
function _0x25eadf(_0x2d3318, _0xb5857f, _0x1b78c5) {
return _0xb5857f ^ (_0x2d3318 | ~_0x1b78c5);
}
function _0x5cae5b(_0x2fbeea, _0x1a7a0e, _0x1e5a2f, _0x4e87ae, _0x223501, _0x249dbe, _0x4ec635) {
_0x2fbeea = _0xddae70(_0x2fbeea, _0xddae70(_0xddae70(_0x372249(_0x1a7a0e, _0x1e5a2f, _0x4e87ae), _0x223501), _0x4ec635));
return _0xddae70(_0x3cf213(_0x2fbeea, _0x249dbe), _0x1a7a0e);
}
function _0x4f0089(_0x14d937, _0x50c518, _0x2514a7, _0x57fc4b, _0x1a65bb, _0x5b1767, _0x20bd1c) {
_0x14d937 = _0xddae70(_0x14d937, _0xddae70(_0xddae70(_0x3dc6d8(_0x50c518, _0x2514a7, _0x57fc4b), _0x1a65bb), _0x20bd1c));
return _0xddae70(_0x3cf213(_0x14d937, _0x5b1767), _0x50c518);
}
function _0x5de9ac(_0x1deb68, _0x507e39, _0x47c88e, _0x3bddb3, _0x356ea4, _0x1d353d, _0x500c58) {
_0x1deb68 = _0xddae70(_0x1deb68, _0xddae70(_0xddae70(_0x24f9c0(_0x507e39, _0x47c88e, _0x3bddb3), _0x356ea4), _0x500c58));
return _0xddae70(_0x3cf213(_0x1deb68, _0x1d353d), _0x507e39);
}
function _0x2a491e(_0x123286, _0x486d82, _0x2a9abe, _0x46e42a, _0x5eaf7b, _0x218304, _0x280dc5) {
_0x123286 = _0xddae70(_0x123286, _0xddae70(_0xddae70(_0x25eadf(_0x486d82, _0x2a9abe, _0x46e42a), _0x5eaf7b), _0x280dc5));
return _0xddae70(_0x3cf213(_0x123286, _0x218304), _0x486d82);
}
function _0x287e25(_0x48c126) {
var _0x54922c;
var _0x4279c6 = _0x48c126["length"];
var _0x259ab1 = _0x4279c6 + 8;
var _0x406afa = (_0x259ab1 - _0x259ab1 % 64) / 64;
var _0x9f7ec5 = (_0x406afa + 1) * 16;
var _0x342f97 = Array(_0x9f7ec5 - 1);
var _0x38b512 = 0;
var _0x40f4d5 = 0;
while (_0x40f4d5 < _0x4279c6) {
_0x54922c = (_0x40f4d5 - _0x40f4d5 % 4) / 4;
_0x38b512 = _0x40f4d5 % 4 * 8;
_0x342f97[_0x54922c] = _0x342f97[_0x54922c] | _0x48c126["charCodeAt"](_0x40f4d5) << _0x38b512;
_0x40f4d5++;
}
_0x54922c = (_0x40f4d5 - _0x40f4d5 % 4) / 4;
_0x38b512 = _0x40f4d5 % 4 * 8;
_0x342f97[_0x54922c] = _0x342f97[_0x54922c] | 128 << _0x38b512;
_0x342f97[_0x9f7ec5 - 2] = _0x4279c6 << 3;
_0x342f97[_0x9f7ec5 - 1] = _0x4279c6 >>> 29;
return _0x342f97;
}
function _0x4bb8aa(_0x40ee87) {
var _0x3378db = "",
_0x55812f = "",
_0x17394a,
_0x2fa3a0;
for (_0x2fa3a0 = 0; _0x2fa3a0 <= 3; _0x2fa3a0++) {
_0x17394a = _0x40ee87 >>> _0x2fa3a0 * 8 & 255;
_0x55812f = "0" + _0x17394a["toString"](16);
_0x3378db = _0x3378db + _0x55812f["substr"](_0x55812f["length"] - 2, 2);
}
return _0x3378db;
}
var _0x1c6a47 = Array();
var _0x3f8a56, _0x3b159c, _0x361533, _0x230872, _0x66dec0, _0x28d15f, _0x9837f3, _0x58b681, _0x4da13c;
var _0x2e0305 = 7,
_0x1dcbf5 = 12,
_0x44081a = 17,
_0x216b87 = 22;
var _0x1fa910 = 5,
_0x554a21 = 9,
_0x5002a0 = 14,
_0x2d4422 = 20;
var _0x51a028 = 4,
_0x5a3a98 = 11,
_0xc55ee0 = 16,
_0x271aee = 23;
var _0x463955 = 6,
_0x25de8d = 10,
_0x2a5661 = 15,
_0x343fe8 = 21;
_0x1c6a47 = _0x287e25(_0x5be8e2);
_0x28d15f = 1732584193;
_0x9837f3 = 4023233417;
_0x58b681 = 2562383102;
_0x4da13c = 271733878;
for (_0x3f8a56 = 0; _0x3f8a56 < _0x1c6a47["length"]; _0x3f8a56 += 16) {
_0x3b159c = _0x28d15f;
_0x361533 = _0x9837f3;
_0x230872 = _0x58b681;
_0x66dec0 = _0x4da13c;
_0x28d15f = _0x5cae5b(_0x28d15f, _0x9837f3, _0x58b681, _0x4da13c, _0x1c6a47[_0x3f8a56 + 0], _0x2e0305, 3614090360);
_0x4da13c = _0x5cae5b(_0x4da13c, _0x28d15f, _0x9837f3, _0x58b681, _0x1c6a47[_0x3f8a56 + 1], _0x1dcbf5, 3905402710);
_0x58b681 = _0x5cae5b(_0x58b681, _0x4da13c, _0x28d15f, _0x9837f3, _0x1c6a47[_0x3f8a56 + 2], _0x44081a, 606105819);
_0x9837f3 = _0x5cae5b(_0x9837f3, _0x58b681, _0x4da13c, _0x28d15f, _0x1c6a47[_0x3f8a56 + 3], _0x216b87, 3250441966);
_0x28d15f = _0x5cae5b(_0x28d15f, _0x9837f3, _0x58b681, _0x4da13c, _0x1c6a47[_0x3f8a56 + 4], _0x2e0305, 4118548399);
_0x4da13c = _0x5cae5b(_0x4da13c, _0x28d15f, _0x9837f3, _0x58b681, _0x1c6a47[_0x3f8a56 + 5], _0x1dcbf5, 1200080426);
_0x58b681 = _0x5cae5b(_0x58b681, _0x4da13c, _0x28d15f, _0x9837f3, _0x1c6a47[_0x3f8a56 + 6], _0x44081a, 2821735955);
_0x9837f3 = _0x5cae5b(_0x9837f3, _0x58b681, _0x4da13c, _0x28d15f, _0x1c6a47[_0x3f8a56 + 7], _0x216b87, 4249261313);
_0x28d15f = _0x5cae5b(_0x28d15f, _0x9837f3, _0x58b681, _0x4da13c, _0x1c6a47[_0x3f8a56 + 8], _0x2e0305, 1770035416);
_0x4da13c = _0x5cae5b(_0x4da13c, _0x28d15f, _0x9837f3, _0x58b681, _0x1c6a47[_0x3f8a56 + 9], _0x1dcbf5, 2336552879);
_0x58b681 = _0x5cae5b(_0x58b681, _0x4da13c, _0x28d15f, _0x9837f3, _0x1c6a47[_0x3f8a56 + 10], _0x44081a, 4294925233);
_0x9837f3 = _0x5cae5b(_0x9837f3, _0x58b681, _0x4da13c, _0x28d15f, _0x1c6a47[_0x3f8a56 + 11], _0x216b87, 2304563134);
_0x28d15f = _0x5cae5b(_0x28d15f, _0x9837f3, _0x58b681, _0x4da13c, _0x1c6a47[_0x3f8a56 + 12], _0x2e0305, 1804603682);
_0x4da13c = _0x5cae5b(_0x4da13c, _0x28d15f, _0x9837f3, _0x58b681, _0x1c6a47[_0x3f8a56 + 13], _0x1dcbf5, 4254626195);
_0x58b681 = _0x5cae5b(_0x58b681, _0x4da13c, _0x28d15f, _0x9837f3, _0x1c6a47[_0x3f8a56 + 14], _0x44081a, 2792965006);
_0x9837f3 = _0x5cae5b(_0x9837f3, _0x58b681, _0x4da13c, _0x28d15f, _0x1c6a47[_0x3f8a56 &#