为什么 这2个md算法结果不一样

shrockey 2009-12-04 10:26:06
Response.Write(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile("111111", "MD5")) 结果是:96E79218965EB72C92A549DD5A330112


public string Md532(string str)
{
string cl = str;
string pwd = "";
MD5 md5 = MD5.Create();//实例化一个md5对像
// 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择 
byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));
// 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
for (int i = 0; i < s.Length; i++)
{
// 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符

pwd = pwd + s[i].ToString("x");

}
return pwd;
}
的结果是:96e79218965eb72c92a549dd5a33112,这是只有31位,为什么呀
...全文
60 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gxingmin 2009-12-04
  • 打赏
  • 举报
回复
如果长度是1,会在前面加0
int i=8;
string s1=i.ToString("x"); s1结果为8
string s2=i.ToString("x2"); s2结果为08
波导终结者 2009-12-04
  • 打赏
  • 举报
回复
补齐两位,否则0开头的,0会没掉,因为你的s是byte
shrockey 2009-12-04
  • 打赏
  • 举报
回复
s[i].ToString("x2"); 好像是可以了,x2表示什么意思
gxingmin 2009-12-04
  • 打赏
  • 举报
回复
pwd = pwd + s[i].ToString("x");
这句话有问题吧,改成
pwd = pwd + s[i].ToString("x2");
tkscascor 2009-12-04
  • 打赏
  • 举报
回复
UTF8 这个的原因?

110,539

社区成员

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

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

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