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

  今天碰到一个问题, 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");
原文地址:https://www.cnblogs.com/zuochanzi/p/7206083.html