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("-","");
    } 

 

 

 

posted @ 2009-10-22 13:55  张三封  阅读(335)  评论(0编辑  收藏  举报