md5加密后怎么只有31位,求31位的代码

zhanghen888 2009-09-27 05:35:26
我使用的以下代码 ,加密的原串全为 字母或者数字 含有&符号 ,为什么出来的结果是31位的,求32位的代码
static string UserMd5(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;
}
...全文
608 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgmary 2009-09-27
  • 打赏
  • 举报
回复
    public static string MD5(string password)
{
byte[] b = System.Text.Encoding.Default.GetBytes(password);
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;
}
much0726 2009-09-27
  • 打赏
  • 举报
回复
pwd = pwd + s[i].ToString("X");
--------------------------
pwd = pwd + s[i].ToString("x");
不知道大小写有区分不。
阿牛138588 2009-09-27
  • 打赏
  • 举报
回复
你真厉害,这个都被你发现了
jxnchk 2009-09-27
  • 打赏
  • 举报
回复
以前也遇到过这个问题,后来发现是理解错误
Error_Code 2009-09-27
  • 打赏
  • 举报
回复
pwd = pwd + s[i].ToString("X"); s[i]=1 => "1"
需要2位右对齐 s[i]=1 => "01"

gisyellow 2009-09-27
  • 打赏
  • 举报
回复
奇怪。。
chaozi_249 2009-09-27
  • 打赏
  • 举报
回复
你先确定s的长度,看是不是32的。按理说应该是啊。
chaozi_249 2009-09-27
  • 打赏
  • 举报
回复
你的for循环写错了,应该是i<s.Length+1
zhanghen888 2009-09-27
  • 打赏
  • 举报
回复
求32位的代码

110,535

社区成员

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

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

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