c#Md5 32位加密结果少了两个0的原因

时间:2021-08-18 03:31:38

  今天碰到一个问题, md5加密之后与网站上md5加密少了两位, 仔细看区别是少了两个零

E1ADC3949BA59ABBE56E057F2F883E    我的md5 
E10ADC3949BA59ABBE56E057F20F883E  第三方网站的加密  

明显第一个和第二个 少了两个零

原因:

这个是很常见的错误,你字节转换成字符串的时候要保证是2位宽度啊,某个字节为0转换成字符串的时候必须是00的,否则就会丢失位数啊。不仅是0,1~9也一样。
我的代码:
    public static string encrypt(string str)
{
string cl = str;
string pwd = "";
MD5 md5
= MD5.Create();
byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));
for (int i = 0; i < s.Length; i++)
{
pwd
= pwd + s[i].ToString("X");
}
return pwd;
}
#endregion
}

把上边 红框内的代码换成X2 问题解决

 pwd = pwd + s[i].ToString("X2");