我在站点 auth上有 Javascript md5 。
我只需要实现这个功能:
function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
我需要以下方法的帮助:
将 little-endian 单词数组转换为十六进制字符串:
function binl2hex(binarray)
{
var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
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);
}
return str;
}
将字符串转换为 little-endian 单词数组 如果 chrsz 是 ASCII,则 >255 的字符会被忽略其高字节。
function str2binl(str)
{
var bin = Array();
var mask = (1 << chrsz) - 1;
for(var i = 0; i < str.length * chrsz; i += chrsz)
bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
return bin;
}