C#MD5加密出结果是29字符密码的秘密
Code
我用的是这个函数,今天测试了一个“s”,“00”,“3”等几个字符时,雷倒我了。
居然不是32位的也不是16位的。
以前一般密码字符都会超过4位的,也没出现过这个现象,从未在意过,偶然的今天居然发现了。
一顿惊奇。
仔细求证后发现。原来在Encoding.UTF8这里,
也就是字符编码这里,有很多ASCII,UTF7,UTF8,UTF32,还有个Unicode
于是结果奇奇怪怪。
看到这里我想你也明白了,换成Unicode之后问题解决。
-------------------------------------------------这个函数是网上流传很广的,不过有很多问题
这个相对好的多。
public string md5(string str)
{
System.Security.Cryptography.MD5 m = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] s = m.ComputeHash(UnicodeEncoding.UTF8.GetBytes(str));
return BitConverter.ToString(s).Replace("-","");
}