作者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
推 MRjk:因為用你這轉法 0E 會轉成 E 不會自動補0 02/25 02:18
→ jimpop:不好意思~請問M大~那要如何修改呢@@? 02/25 02:24
推 MRjk:pwd = pwd + s[i].ToString("X2"); 02/25 02:27
→ MRjk:順便說一下其他用法 D5 就是轉成10進位 不滿5位數會補滿0 02/25 02:29
→ MRjk:X5 就是轉成16進位 不滿5位數補滿0 02/25 02:29
→ jimpop:哦哦~原來如此~還有這種用法!!!謝謝M大~~解決了!! 02/25 10:56
推 liaommx:我是習慣用padleft(2,'0'),看個人 02/25 10:57
推 tomex:Encoding.GetString(byte[]); 02/27 17:15
→ Splash5:c#有內建的md5不是嗎@@.. 04/07 20:57