特殊c md5加密字符串 xieweibin md5是多少

1840人阅读
两段加密JS &方便他人方便自己
32位小写MD5 js
var hexcase = 0; &
var b64pad &= &&;&
var chrsz & = 8; &
function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
function calcMD5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
function md5_vm_test()
& return hex_md5(&abc&) == &cd24fb0de17f72&;
function core_md5(x, len)
& x[len && 5] |= 0x80 && ((len) % 32);
& x[(((len + 64) &&& 9) && 4) + 14] =
& var a = &;
& var b = -;
& var c = -;
& var d = &;
& for(var i = 0; i & x. i += 16)
& & var olda =
& & var oldb =
& & var oldc =
& & var oldd =
& & a = md5_ff(a, b, c, d, x[i+ 0], 7 , -);
& & d = md5_ff(d, a, b, c, x[i+ 1], 12, -);
& & c = md5_ff(c, d, a, b, x[i+ 2], 17, &);
& & b = md5_ff(b, c, d, a, x[i+ 3], 22, -);
& & a = md5_ff(a, b, c, d, x[i+ 4], 7 , -);
& & d = md5_ff(d, a, b, c, x[i+ 5], 12, &);
& & c = md5_ff(c, d, a, b, x[i+ 6], 17, -);
& & b = md5_ff(b, c, d, a, x[i+ 7], 22, -);
& & a = md5_ff(a, b, c, d, x[i+ 8], 7 , &);
& & d = md5_ff(d, a, b, c, x[i+ 9], 12, -);
& & c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
& & b = md5_ff(b, c, d, a, x[i+11], 22, -);
& & a = md5_ff(a, b, c, d, x[i+12], 7 , &);
& & d = md5_ff(d, a, b, c, x[i+13], 12, -);
& & c = md5_ff(c, d, a, b, x[i+14], 17, -);
& & b = md5_ff(b, c, d, a, x[i+15], 22, &);
& & a = md5_gg(a, b, c, d, x[i+ 1], 5 , -);
& & d = md5_gg(d, a, b, c, x[i+ 6], 9 , -);
& & c = md5_gg(c, d, a, b, x[i+11], 14, &);
& & b = md5_gg(b, c, d, a, x[i+ 0], 20, -);
& & a = md5_gg(a, b, c, d, x[i+ 5], 5 , -);
& & d = md5_gg(d, a, b, c, x[i+10], 9 , &);
& & c = md5_gg(c, d, a, b, x[i+15], 14, -);
& & b = md5_gg(b, c, d, a, x[i+ 4], 20, -);
& & a = md5_gg(a, b, c, d, x[i+ 9], 5 , &);
& & d = md5_gg(d, a, b, c, x[i+14], 9 , -);
& & c = md5_gg(c, d, a, b, x[i+ 3], 14, -);
& & b = md5_gg(b, c, d, a, x[i+ 8], 20, &);
& & a = md5_gg(a, b, c, d, x[i+13], 5 , -);
& & d = md5_gg(d, a, b, c, x[i+ 2], 9 , -);
& & c = md5_gg(c, d, a, b, x[i+ 7], 14, &);
& & b = md5_gg(b, c, d, a, x[i+12], 20, -);
& & a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
& & d = md5_hh(d, a, b, c, x[i+ 8], 11, -);
& & c = md5_hh(c, d, a, b, x[i+11], 16, &);
& & b = md5_hh(b, c, d, a, x[i+14], 23, -);
& & a = md5_hh(a, b, c, d, x[i+ 1], 4 , -);
& & d = md5_hh(d, a, b, c, x[i+ 4], 11, &);
& & c = md5_hh(c, d, a, b, x[i+ 7], 16, -);
& & b = md5_hh(b, c, d, a, x[i+10], 23, -);
& & a = md5_hh(a, b, c, d, x[i+13], 4 , &);
& & d = md5_hh(d, a, b, c, x[i+ 0], 11, -);
& & c = md5_hh(c, d, a, b, x[i+ 3], 16, -);
& & b = md5_hh(b, c, d, a, x[i+ 6], 23, &);
& & a = md5_hh(a, b, c, d, x[i+ 9], 4 , -);
& & d = md5_hh(d, a, b, c, x[i+12], 11, -);
& & c = md5_hh(c, d, a, b, x[i+15], 16, &);
& & b = md5_hh(b, c, d, a, x[i+ 2], 23, -);
& & a = md5_ii(a, b, c, d, x[i+ 0], 6 , -);
& & d = md5_ii(d, a, b, c, x[i+ 7], 10, &);
& & c = md5_ii(c, d, a, b, x[i+14], 15, -);
& & b = md5_ii(b, c, d, a, x[i+ 5], 21, -);
& & a = md5_ii(a, b, c, d, x[i+12], 6 , &);
& & d = md5_ii(d, a, b, c, x[i+ 3], 10, -);
& & c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
& & b = md5_ii(b, c, d, a, x[i+ 1], 21, -);
& & a = md5_ii(a, b, c, d, x[i+ 8], 6 , &);
& & d = md5_ii(d, a, b, c, x[i+15], 10, -);
& & c = md5_ii(c, d, a, b, x[i+ 6], 15, -);
& & b = md5_ii(b, c, d, a, x[i+13], 21, &);
& & a = md5_ii(a, b, c, d, x[i+ 4], 6 , -);
& & d = md5_ii(d, a, b, c, x[i+11], 10, -);
& & c = md5_ii(c, d, a, b, x[i+ 2], 15, &);
& & b = md5_ii(b, c, d, a, x[i+ 9], 21, -);
& & a = safe_add(a, olda);
& & b = safe_add(b, oldb);
& & c = safe_add(c, oldc);
& & d = safe_add(d, oldd);
& return Array(a, b, c, d);
function md5_cmn(q, a, b, x, s, t)
& return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
function md5_ff(a, b, c, d, x, s, t)
& return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
function md5_gg(a, b, c, d, x, s, t)
& return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
function md5_hh(a, b, c, d, x, s, t)
& return md5_cmn(b ^ c ^ d, a, b, x, s, t);
function md5_ii(a, b, c, d, x, s, t)
& return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
function core_hmac_md5(key, data)
& var bkey = str2binl(key);
& if(bkey.length & 16) bkey = core_md5(bkey, key.length * chrsz);
& var ipad = Array(16), opad = Array(16);
& for(var i = 0; i & 16; i++)&
& & ipad[i] = bkey[i] ^ 0x;
& & opad[i] = bkey[i] ^ 0x5C5C5C5C;
& var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
& return core_md5(opad.concat(hash), 512 + 128);
function safe_add(x, y)
& var lsw = (x & 0xFFFF) + (y & 0xFFFF);
& var msw = (x && 16) + (y && 16) + (lsw && 16);
& return (msw && 16) | (lsw & 0xFFFF);
function bit_rol(num, cnt)
& return (num && cnt) | (num &&& (32 - cnt));
function str2binl(str)
& var bin = Array();
& var mask = (1 && chrsz) - 1;
& for(var i = 0; i & str.length * i += chrsz)
& & bin[i&&5] |= (str.charCodeAt(i / chrsz) & mask) && (i%32);
function binl2hex(binarray)
& var hex_tab = hexcase ? &ABCDEF& : &abcdef&;
& var str = &&;
& for(var i = 0; i & binarray.length * 4; i++)
& & str += hex_tab.charAt((binarray[i&&2] && ((i%4)*8+4)) & 0xF) +
& & & & & &hex_tab.charAt((binarray[i&&2] && ((i%4)*8 &)) & 0xF);
function binl2b64(binarray)
& var tab = &ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/&;
& var str = &&;
& for(var i = 0; i & binarray.length * 4; i += 3)
& & var triplet = (((binarray[i & && 2] && 8 * ( i & %4)) & 0xFF) && 16)
& & & & & & & & | (((binarray[i+1 && 2] && 8 * ((i+1)%4)) & 0xFF) && 8 )
& & & & & & & & | &((binarray[i+2 && 2] && 8 * ((i+2)%4)) & 0xFF);
& & for(var j = 0; j & 4; j++)
& & & if(i * 8 + j * 6 & binarray.length * 32) str += b64
& & & else str += tab.charAt((triplet && 6*(3-j)) & 0x3F);
sha256 哈希
var hexcase = 0; &/* hex output format. 0 - 1 - uppercase & & & &*/
var b64pad &= &&; /* base-64 pad character. &=& for strict RFC compliance & */
&* These are the functions you'll usually want to call
&* They take string arguments and return either hex or base-64 encoded strings
function hex_sha256(s) & &{ return rstr2hex(rstr_sha256(str2rstr_utf8(s))); }
function b64_sha256(s) & &{ return rstr2b64(rstr_sha256(str2rstr_utf8(s))); }
function any_sha256(s, e) { return rstr2any(rstr_sha256(str2rstr_utf8(s)), e); }
function hex_hmac_sha256(k, d)
& { return rstr2hex(rstr_hmac_sha256(str2rstr_utf8(k), str2rstr_utf8(d))); }
function b64_hmac_sha256(k, d)
& { return rstr2b64(rstr_hmac_sha256(str2rstr_utf8(k), str2rstr_utf8(d))); }
function any_hmac_sha256(k, d, e)
& { return rstr2any(rstr_hmac_sha256(str2rstr_utf8(k), str2rstr_utf8(d)), e); }
&* Perform a simple self-test to see if the VM is working
function sha256_vm_test()
& return hex_sha256(&abc&).toLowerCase() ==
& & & & & & &bacfeadaeacb410ff61f20015ad&;
&* Calculate the sha256 of a raw string
function rstr_sha256(s)
& return binb2rstr(binb_sha256(rstr2binb(s), s.length * 8));
&* Calculate the HMAC-sha256 of a key and some data (raw strings)
function rstr_hmac_sha256(key, data)
& var bkey = rstr2binb(key);
& if(bkey.length & 16) bkey = binb_sha256(bkey, key.length * 8);
& var ipad = Array(16), opad = Array(16);
& for(var i = 0; i & 16; i++)
& & ipad[i] = bkey[i] ^ 0x;
& & opad[i] = bkey[i] ^ 0x5C5C5C5C;
& var hash = binb_sha256(ipad.concat(rstr2binb(data)), 512 + data.length * 8);
& return binb2rstr(binb_sha256(opad.concat(hash), 512 + 256));
&* Convert a raw string to a hex string
function rstr2hex(input)
& try { hexcase } catch(e) { hexcase=0; }
& var hex_tab = hexcase ? &ABCDEF& : &abcdef&;
& var output = &&;
& for(var i = 0; i & input. i++)
& & x = input.charCodeAt(i);
& & output += hex_tab.charAt((x &&& 4) & 0x0F)
& & & & & &+ &hex_tab.charAt( x & & & && 0x0F);
&* Convert a raw string to a base-64 string
function rstr2b64(input)
& try { b64pad } catch(e) { b64pad=''; }
& var tab = &ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/&;
& var output = &&;
& var len = input.
& for(var i = 0; i & i += 3)
& & var triplet = (input.charCodeAt(i) && 16)
& & & & & & & & | (i + 1 & len ? input.charCodeAt(i+1) && 8 : 0)
& & & & & & & & | (i + 2 & len ? input.charCodeAt(i+2) & & &: 0);
& & for(var j = 0; j & 4; j++)
& & & if(i * 8 + j * 6 & input.length * 8) output += b64
& & & else output += tab.charAt((triplet &&& 6*(3-j)) & 0x3F);
&* Convert a raw string to an arbitrary string encoding
function rstr2any(input, encoding)
& var divisor = encoding.
& var remainders = Array();
& var i, q, x,
& /* Convert to an array of 16-bit big-endian values, forming the dividend */
& var dividend = Array(Math.ceil(input.length / 2));
& for(i = 0; i & dividend. i++)
& & dividend[i] = (input.charCodeAt(i * 2) && 8) | input.charCodeAt(i * 2 + 1);
& &* Repeatedly perform a long division. The binary array forms the dividend,
& &* the length of the encoding is the divisor. Once computed, the quotient
& &* forms the dividend for the next step. We stop when the dividend is zero.
& &* All remainders are stored for later use.
& while(dividend.length & 0)
& & quotient = Array();
& & x = 0;
& & for(i = 0; i & dividend. i++)
& & & x = (x && 16) + dividend[i];
& & & q = Math.floor(x / divisor);
& & & x -= q *
& & & if(quotient.length & 0 || q & 0)
& & & & quotient[quotient.length] =
& & remainders[remainders.length] =
& & dividend =
& /* Convert the remainders to the output string */
& var output = &&;
& for(i = remainders.length - 1; i &= 0; i--)
& & output += encoding.charAt(remainders[i]);
& /* Append leading zero equivalents */
& var full_length = Math.ceil(input.length * 8 /
& & & & & & & & & & & & & & & & & & (Math.log(encoding.length) / Math.log(2)))
& for(i = output. i & full_ i++)
& & output = encoding[0] +
&* Encode a string as utf-8.
&* For efficiency, this assumes the input is valid utf-16.
function str2rstr_utf8(input)
& var output = &&;
& var i = -1;
& while(++i & input.length)
& & /* Decode utf-16 surrogate pairs */
& & x = input.charCodeAt(i);
& & y = i + 1 & input.length ? input.charCodeAt(i + 1) : 0;
& & if(0xD800 &= x && x &= 0xDBFF && 0xDC00 &= y && y &= 0xDFFF)
& & & x = 0x10000 + ((x & 0x03FF) && 10) + (y & 0x03FF);
& & & i++;
& & /* Encode output as utf-8 */
& & if(x &= 0x7F)
& & & output += String.fromCharCode(x);
& & else if(x &= 0x7FF)
& & & output += String.fromCharCode(0xC0 | ((x &&& 6 ) & 0x1F),
& & & & & & & & & & & & & & & & & & 0x80 | ( x & & & & & 0x3F));
& & else if(x &= 0xFFFF)
& & & output += String.fromCharCode(0xE0 | ((x &&& 12) & 0x0F),
& & & & & & & & & & & & & & & & & & 0x80 | ((x &&& 6 ) & 0x3F),
& & & & & & & & & & & & & & & & & & 0x80 | ( x & & & & & 0x3F));
& & else if(x &= 0x1FFFFF)
& & & output += String.fromCharCode(0xF0 | ((x &&& 18) & 0x07),
& & & & & & & & & & & & & & & & & & 0x80 | ((x &&& 12) & 0x3F),
& & & & & & & & & & & & & & & & & & 0x80 | ((x &&& 6 ) & 0x3F),
& & & & & & & & & & & & & & & & & & 0x80 | ( x & & & & & 0x3F));
&* Encode a string as utf-16
function str2rstr_utf16le(input)
& var output = &&;
& for(var i = 0; i & input. i++)
& & output += String.fromCharCode( input.charCodeAt(i) & & & && 0xFF,
& & & & & & & & & & & & & & & & & (input.charCodeAt(i) &&& 8) & 0xFF);
function str2rstr_utf16be(input)
& var output = &&;
& for(var i = 0; i & input. i++)
& & output += String.fromCharCode((input.charCodeAt(i) &&& 8) & 0xFF,
& & & & & & & & & & & & & & & & & &input.charCodeAt(i) & & & && 0xFF);
&* Convert a raw string to an array of big-endian words
&* Characters &255 have their high-byte silently ignored.
function rstr2binb(input)
& var output = Array(input.length && 2);
& for(var i = 0; i & output. i++)
& & output[i] = 0;
& for(var i = 0; i & input.length * 8; i += 8)
& & output[i&&5] |= (input.charCodeAt(i / 8) & 0xFF) && (24 - i % 32);
&* Convert an array of big-endian words to a string
function binb2rstr(input)
& var output = &&;
& for(var i = 0; i & input.length * 32; i += 8)
& & output += String.fromCharCode((input[i&&5] &&& (24 - i % 32)) & 0xFF);
&* Main sha256 function, with its support functions
function sha256_S (X, n) {return ( X &&& n ) | (X && (32 - n));}
function sha256_R (X, n) {return ( X &&& n );}
function sha256_Ch(x, y, z) {return ((x & y) ^ ((~x) & z));}
function sha256_Maj(x, y, z) {return ((x & y) ^ (x & z) ^ (y & z));}
function sha256_Sigma0256(x) {return (sha256_S(x, 2) ^ sha256_S(x, 13) ^ sha256_S(x, 22));}
function sha256_Sigma1256(x) {return (sha256_S(x, 6) ^ sha256_S(x, 11) ^ sha256_S(x, 25));}
function sha256_Gamma0256(x) {return (sha256_S(x, 7) ^ sha256_S(x, 18) ^ sha256_R(x, 3));}
function sha256_Gamma1256(x) {return (sha256_S(x, 17) ^ sha256_S(x, 19) ^ sha256_R(x, 10));}
function sha256_Sigma0512(x) {return (sha256_S(x, 28) ^ sha256_S(x, 34) ^ sha256_S(x, 39));}
function sha256_Sigma1512(x) {return (sha256_S(x, 14) ^ sha256_S(x, 18) ^ sha256_S(x, 41));}
function sha256_Gamma0512(x) {return (sha256_S(x, 1) &^ sha256_S(x, 8) ^ sha256_R(x, 7));}
function sha256_Gamma1512(x) {return (sha256_S(x, 19) ^ sha256_S(x, 61) ^ sha256_R(x, 6));}
var sha256_K = new Array
& , , -, -, , ,
& -, -, -, , , ,
& , -, -, -, -, -,
& , , , , , ,
& -, -, -, -, -, -,
& , , , , , ,
& , , -, -, -, -,
& -, -, -, -, -, ,
& , , , , , ,
& , , , , -, -,
& -, -, -, -
function binb_sha256(m, l)
& var HASH = new Array(, -, , -,
& & & & & & & & & & & &, -, , );
& var W = new Array(64);
& var a, b, c, d, e, f, g,
& var i, j, T1, T2;
& /* append padding */
& m[l && 5] |= 0x80 && (24 - l % 32);
& m[((l + 64 && 9) && 4) + 15] =
& for(i = 0; i & m. i += 16)
& & a = HASH[0];
& & b = HASH[1];
& & c = HASH[2];
& & d = HASH[3];
& & e = HASH[4];
& & f = HASH[5];
& & g = HASH[6];
& & h = HASH[7];
& & for(j = 0; j & 64; j++)
& & & if (j & 16) W[j] = m[j + i];
& & & else W[j] = safe_add(safe_add(safe_add(sha256_Gamma1256(W[j - 2]), W[j - 7]),
& & & & & & & & & & & & & & & & & & & & & & sha256_Gamma0256(W[j - 15])), W[j - 16]);
& & & T1 = safe_add(safe_add(safe_add(safe_add(h, sha256_Sigma1256(e)), sha256_Ch(e, f, g)),
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & sha256_K[j]), W[j]);
& & & T2 = safe_add(sha256_Sigma0256(a), sha256_Maj(a, b, c));
& & & e = safe_add(d, T1);
& & & a = safe_add(T1, T2);
& & HASH[0] = safe_add(a, HASH[0]);
& & HASH[1] = safe_add(b, HASH[1]);
& & HASH[2] = safe_add(c, HASH[2]);
& & HASH[3] = safe_add(d, HASH[3]);
& & HASH[4] = safe_add(e, HASH[4]);
& & HASH[5] = safe_add(f, HASH[5]);
& & HASH[6] = safe_add(g, HASH[6]);
& & HASH[7] = safe_add(h, HASH[7]);
& return HASH;
function safe_add (x, y)
& var lsw = (x & 0xFFFF) + (y & 0xFFFF);
& var msw = (x && 16) + (y && 16) + (lsw && 16);
& return (msw && 16) | (lsw & 0xFFFF);
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:20149次
排名:千里之外
原创:21篇
(1)(1)(1)(1)(1)(6)(1)(1)(1)(3)(1)(4)(1)C#基础(125)
易语言(7)
今天模拟一个安卓程序的数据包,有一个sign_code参数,32位是个md5,简单把其他参数按经验组合后取md5,对不上,算了,直接看源代码吧
还好,代码混淆的很轻,dex2jar之后 搜索sign_code ,很快找到关键方法,跟之前猜的差不多,只是参数加密的顺序不一致,另外多了一个固定的字符串,就是防猜测的吧,呵呵
按照代码 在易语言里 对组合后的字符串取数据摘要 得到md5,发现竟然跟java里得到的md5值不一样。。。
仔细检查了一下反编译的java源码,发现其中用于取MD5的文本是UTF-8编码:
MessageDigest md = MessageDigest.getInstance(&MD5&);
md.update(plainText.getBytes(&UTF-8&));
byte b[] = md.digest();
这下明白为什么同样的字符串md5不以言了,在易语言里字符串编码默认是ANSI,同一个字符串使用ANSI 和 UTF-8编码,自然是得到不同的字节集,其md5也就会不同
于是,解决方案也就很简单了,在易语言里先将字符串转为UTF-8,再取md5:
取数据摘要 (编码转换 (到字节集 (“我错了”), #编码_GB2312, #编码_UTF_8, ret))
字符串编码不同,可能会导致md5不同,这问题是在任何语言中都需要注意的,php,或者javascript里也是。这里再贴一个utf-8编码的取md5.js代码:
//计算MD5算法
var hexcase = 0;
function hex_md5(a) {
if (a == &&)
return rstr2hex(rstr_md5(str2rstr_utf8(a)));
function hex_hmac_md5(a, b) {
return rstr2hex(rstr_hmac_md5(str2rstr_utf8(a), str2rstr_utf8(b)));
function md5_vm_test() {
return hex_md5(&abc&).toLowerCase() == &cd24fb0de17f72&;
function rstr_md5(a) {
return binl2rstr(binl_md5(rstr2binl(a), a.length * 8));
function rstr_hmac_md5(c, f) {
var e = rstr2binl(c);
if (e.length & 16) {
e = binl_md5(e, c.length * 8);
var a = Array(16), d = Array(16);
for (var b = 0; b & 16; b++) {
a[b] = e[b] ^ ;
d[b] = e[b] ^ ;
var g = binl_md5(a.concat(rstr2binl(f)), 512 + f.length * 8);
return binl2rstr(binl_md5(d.concat(g), 512 + 128));
function rstr2hex(c) {
} catch (g) {
hexcase = 0;
var f = hexcase ? &ABCDEF& :&abcdef&;
var b = &&;
for (var d = 0; d & c. d++) {
a = c.charCodeAt(d);
b += f.charAt(a &&& 4 & 15) + f.charAt(a & 15);
function str2rstr_utf8(c) {
var b = &&;
var d = -1;
while (++d & c.length) {
a = c.charCodeAt(d);
e = d + 1 & c.length ? c.charCodeAt(d + 1) :0;
if (55296 &= a && a &= 56319 && 56320 &= e && e &= 57343) {
a = 65536 + ((a & 1023) && 10) + (e & 1023);
if (a &= 127) {
b += String.fromCharCode(a);
if (a &= 2047) {
b += String.fromCharCode(192 | a &&& 6 & 31, 128 | a & 63);
if (a &= 65535) {
b += String.fromCharCode(224 | a &&& 12 & 15, 128 | a &&& 6 & 63, 128 | a & 63);
if (a &= 2097151) {
b += String.fromCharCode(240 | a &&& 18 & 7, 128 | a &&& 12 & 63, 128 | a &&& 6 & 63, 128 | a & 63);
function rstr2binl(b) {
var a = Array(b.length && 2);
for (var c = 0; c & a. c++) {
for (var c = 0; c & b.length * 8; c += 8) {
a[c && 5] |= (b.charCodeAt(c / 8) & 255) && c % 32;
function binl2rstr(b) {
var a = &&;
for (var c = 0; c & b.length * 32; c += 8) {
a += String.fromCharCode(b[c && 5] &&& c % 32 & 255);
function binl_md5(p, k) {
p[k && 5] |= 128 && k % 32;
p[(k + 64 &&& 9 && 4) + 14] =
var n = -;
var m = -;
for (var g = 0; g & p. g += 16) {
o = md5_ff(o, n, m, l, p[g + 0], 7, -);
l = md5_ff(l, o, n, m, p[g + 1], 12, -);
m = md5_ff(m, l, o, n, p[g + 2], 17, );
n = md5_ff(n, m, l, o, p[g + 3], 22, -);
o = md5_ff(o, n, m, l, p[g + 4], 7, -);
l = md5_ff(l, o, n, m, p[g + 5], 12, );
m = md5_ff(m, l, o, n, p[g + 6], 17, -);
n = md5_ff(n, m, l, o, p[g + 7], 22, -);
o = md5_ff(o, n, m, l, p[g + 8], 7, );
l = md5_ff(l, o, n, m, p[g + 9], 12, -);
m = md5_ff(m, l, o, n, p[g + 10], 17, -42063);
n = md5_ff(n, m, l, o, p[g + 11], 22, -);
o = md5_ff(o, n, m, l, p[g + 12], 7, );
l = md5_ff(l, o, n, m, p[g + 13], 12, -);
m = md5_ff(m, l, o, n, p[g + 14], 17, -);
n = md5_ff(n, m, l, o, p[g + 15], 22, );
o = md5_gg(o, n, m, l, p[g + 1], 5, -);
l = md5_gg(l, o, n, m, p[g + 6], 9, -);
m = md5_gg(m, l, o, n, p[g + 11], 14, );
n = md5_gg(n, m, l, o, p[g + 0], 20, -);
o = md5_gg(o, n, m, l, p[g + 5], 5, -);
l = md5_gg(l, o, n, m, p[g + 10], 9, );
m = md5_gg(m, l, o, n, p[g + 15], 14, -);
n = md5_gg(n, m, l, o, p[g + 4], 20, -);
o = md5_gg(o, n, m, l, p[g + 9], 5, );
l = md5_gg(l, o, n, m, p[g + 14], 9, -);
m = md5_gg(m, l, o, n, p[g + 3], 14, -);
n = md5_gg(n, m, l, o, p[g + 8], 20, );
o = md5_gg(o, n, m, l, p[g + 13], 5, -);
l = md5_gg(l, o, n, m, p[g + 2], 9, -);
m = md5_gg(m, l, o, n, p[g + 7], 14, );
n = md5_gg(n, m, l, o, p[g + 12], 20, -);
o = md5_hh(o, n, m, l, p[g + 5], 4, -378558);
l = md5_hh(l, o, n, m, p[g + 8], 11, -);
m = md5_hh(m, l, o, n, p[g + 11], 16, );
n = md5_hh(n, m, l, o, p[g + 14], 23, -);
o = md5_hh(o, n, m, l, p[g + 1], 4, -);
l = md5_hh(l, o, n, m, p[g + 4], 11, );
m = md5_hh(m, l, o, n, p[g + 7], 16, -);
n = md5_hh(n, m, l, o, p[g + 10], 23, -);
o = md5_hh(o, n, m, l, p[g + 13], 4, );
l = md5_hh(l, o, n, m, p[g + 0], 11, -);
m = md5_hh(m, l, o, n, p[g + 3], 16, -);
n = md5_hh(n, m, l, o, p[g + 6], 23, );
o = md5_hh(o, n, m, l, p[g + 9], 4, -);
l = md5_hh(l, o, n, m, p[g + 12], 11, -);
m = md5_hh(m, l, o, n, p[g + 15], 16, );
n = md5_hh(n, m, l, o, p[g + 2], 23, -);
o = md5_ii(o, n, m, l, p[g + 0], 6, -);
l = md5_ii(l, o, n, m, p[g + 7], 10, );
m = md5_ii(m, l, o, n, p[g + 14], 15, -);
n = md5_ii(n, m, l, o, p[g + 5], 21, -);
o = md5_ii(o, n, m, l, p[g + 12], 6, );
l = md5_ii(l, o, n, m, p[g + 3], 10, -);
m = md5_ii(m, l, o, n, p[g + 10], 15, -1051523);
n = md5_ii(n, m, l, o, p[g + 1], 21, -);
o = md5_ii(o, n, m, l, p[g + 8], 6, );
l = md5_ii(l, o, n, m, p[g + 15], 10, -);
m = md5_ii(m, l, o, n, p[g + 6], 15, -);
n = md5_ii(n, m, l, o, p[g + 13], 21, );
o = md5_ii(o, n, m, l, p[g + 4], 6, -);
l = md5_ii(l, o, n, m, p[g + 11], 10, -);
m = md5_ii(m, l, o, n, p[g + 2], 15, );
n = md5_ii(n, m, l, o, p[g + 9], 21, -);
o = safe_add(o, j);
n = safe_add(n, h);
m = safe_add(m, f);
l = safe_add(l, e);
return Array(o, n, m, l);
function md5_cmn(h, e, d, c, g, f) {
return safe_add(bit_rol(safe_add(safe_add(e, h), safe_add(c, f)), g), d);
function md5_ff(g, f, k, j, e, i, h) {
return md5_cmn(f & k | ~f & j, g, f, e, i, h);
function md5_gg(g, f, k, j, e, i, h) {
return md5_cmn(f & j | k & ~j, g, f, e, i, h);
function md5_hh(g, f, k, j, e, i, h) {
return md5_cmn(f ^ k ^ j, g, f, e, i, h);
function md5_ii(g, f, k, j, e, i, h) {
return md5_cmn(k ^ (f | ~j), g, f, e, i, h);
function safe_add(a, d) {
var c = (a & 65535) + (d & 65535);
var b = (a && 16) + (d && 16) + (c && 16);
return b && 16 | c & 65535;
function bit_rol(a, b) {
return a && b | a &&& 32 -
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:40074次
排名:千里之外
原创:24篇
转载:114篇
(1)(1)(2)(2)(4)(1)(1)(2)(2)(1)(3)(3)(4)(3)(13)(38)(1)(1)(10)(9)(5)(8)(23)

我要回帖

更多关于 linux md5sum 字符串 的文章

 

随机推荐