看板 C_Sharp 關於我們 聯絡資訊
最近在網路上找到一個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