WinForm下对 中文字符串MD5 加密

Error_Code 2008-03-15 08:33:54
http://topic.csdn.net/t/20050807/11/4193724.html
这里有个帖 加密结果跟
站长工具http://tools.chinaz.com/ 下面的 32位MD5加密结果不一样
但是加密英文和数字结果是没有错的
就加密中文 结果不对

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;
}

请问怎样让该方法支持中文加密
用上面的方法 如果是我的问题 问题可能出在哪里?
...全文
344 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dannisyan 2009-05-08
  • 打赏
  • 举报
回复
3楼正解
Error_Code 2008-03-17
  • 打赏
  • 举报
回复
用其他的方法解决了
结贴
wuyi8808 2008-03-16
  • 打赏
  • 举报
回复

// 试试以下之一:
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);
wuyi8808 2008-03-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Error_Code 的回复:]
byte[] b = System.Text.Encoding.Default.GetBytes(str);
这么说是这里的问题了?
[/Quote]

是的,你改用其他编码试试,比如 Unicode 或 GB18030。
yurow 2008-03-16
  • 打赏
  • 举报
回复
引入System.Web.dll,用System.Web命名空间的
pass = FormsAuthentication.HashPasswordForStoringInConfigFile(pass, "MD5");
Error_Code 2008-03-16
  • 打赏
  • 举报
回复
byte[] b = System.Text.Encoding.Default.GetBytes(str);
这么说是这里的问题了?
vrhero 2008-03-15
  • 打赏
  • 举报
回复
不存在支持不支持中文...对哈希算法来说...没有中文没有英文也没有数字...只有0和1...

所以你得到的结果和其他工具的结果不同说明...两者用的字符编码不一样...你用的是本机ANSI码...简体中文就是GB2312...

110,555

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧