大体思路都是,MD5加密后得到byte类型的数组,然后将每个数组成员转换成16进制的string字符串,这里就容易产生BUG,因为转换成16进制时,遇到10以内的数字时,转后都是一个单字符的,但我们每次转换都要得到两个字符的字符串,网上大多数都没有考虑到这个,导致加密结果出现问题。
下面是我自己写的32位MD5加密函数,如果大家发现有BUG,请一定要给我留言,我好改正,谢谢
//32位MD5加密
public string TO32MD5(string srcstr)
{
MD5 md5 = MD5.Create();
string md5str = "";//加密后的string
byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(srcstr));
for (int i = 0; i < s.Length; i++)
{
string btos = s[i].ToString("X");
if(btos.Length == 1)
{
//每次转换得到的都是2位
btos = "0" + btos;
}
md5str = md5str + btos;//转换成十六进制
}
return md5str;
}