作者jimpop (popmij)
看板C_Sharp
标题[问题] 使用MD5编码总是少一个0
时间Thu Feb 25 02:02:55 2010
最近在网路上找到一个MD5编码的函数
内容如下:
public string UserMd5(string str)//MD5编码
{
string pwd = "";
MD5 md5 = MD5.Create();
byte[] s = md5.ComputeHash(Encoding.Default.GetBytes(str));
for (int i = 0; i < s.Length; i++)
{
pwd = pwd + s[i].ToString("X");
}
return pwd;
这样虽然可以正常编码
但跟php中的md5编码总是会少一个0
譬如:
要加密的字串是: asd
PHP加密後是: 7815696ECBF1C96E6894B779456D330E
C#的加密後是: 7815696ECBF1C96E6894B779456D33E
怎麽会这样呢?
我也有试过线上JAVA加密结果如同PHP的啊~~
究竟是哪里出问题了呢??
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.164.35.183
1F:推 MRjk:因为用你这转法 0E 会转成 E 不会自动补0 02/25 02:18
2F:→ jimpop:不好意思~请问M大~那要如何修改呢@@? 02/25 02:24
3F:推 MRjk:pwd = pwd + s[i].ToString("X2"); 02/25 02:27
4F:→ MRjk:顺便说一下其他用法 D5 就是转成10进位 不满5位数会补满0 02/25 02:29
5F:→ MRjk:X5 就是转成16进位 不满5位数补满0 02/25 02:29
6F:→ jimpop:哦哦~原来如此~还有这种用法!!!谢谢M大~~解决了!! 02/25 10:56
7F:推 liaommx:我是习惯用padleft(2,'0'),看个人 02/25 10:57
8F:推 tomex:Encoding.GetString(byte[]); 02/27 17:15
9F:→ Splash5:c#有内建的md5不是吗@@.. 04/07 20:57