WinForm下对 中文字符串MD5 加密
http://topic.csdn.net/t/20050807/11/4193724.html
这里有个帖 加密结果跟
站长工具http://tools.chinaz.com/ 下面的 32位MD5加密结果不一样
但是加密英文和数字结果是没有错的
就加密中文 结果不对
- C# code
public static string Get32MD5(string str) { byte[] b = System.Text.Encoding.Default.GetBytes(str); b = new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(b); string ret = ""; for (int i = 0; i < b.Length; i++) { ret += b[i].ToString("X").PadLeft(2, '0'); } return ret; }
请问怎样让该方法支持中文加密
用上面的方法 如果是我的问题 问题可能出在哪里?
[解决办法]
不存在支持不支持中文...对哈希算法来说...没有中文没有英文也没有数字...只有0和1...
所以你得到的结果和其他工具的结果不同说明...两者用的字符编码不一样...你用的是本机ANSI码...简体中文就是GB2312...
[解决办法]
引入System.Web.dll,用System.Web命名空间的
pass = FormsAuthentication.HashPasswordForStoringInConfigFile(pass, "MD5");
[解决办法]
[解决办法]
- C# code
// 试试以下之一:byte[] b = System.Text.Encoding.UTF8.GetBytes(str); byte[] b = System.Text.Encoding.Unicode.GetBytes(str); byte[] b = System.Text.Encoding.GetEncoding("GB18030").GetBytes(str);