[問題] 使用MD5編碼總是少一個0

看板C_Sharp作者 (popmij)時間16年前 (2010/02/25 02:02), 編輯推噓4(405)
留言9則, 5人參與, 最新討論串1/2 (看更多)
最近在網路上找到一個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

02/25 02:18, , 1F
因為用你這轉法 0E 會轉成 E 不會自動補0
02/25 02:18, 1F

02/25 02:24, , 2F
不好意思~請問M大~那要如何修改呢@@?
02/25 02:24, 2F

02/25 02:27, , 3F
pwd = pwd + s[i].ToString("X2");
02/25 02:27, 3F

02/25 02:29, , 4F
順便說一下其他用法 D5 就是轉成10進位 不滿5位數會補滿0
02/25 02:29, 4F

02/25 02:29, , 5F
X5 就是轉成16進位 不滿5位數補滿0
02/25 02:29, 5F

02/25 10:56, , 6F
哦哦~原來如此~還有這種用法!!!謝謝M大~~解決了!!
02/25 10:56, 6F

02/25 10:57, , 7F
我是習慣用padleft(2,'0'),看個人
02/25 10:57, 7F

02/27 17:15, , 8F
Encoding.GetString(byte[]);
02/27 17:15, 8F

04/07 20:57, , 9F
c#有內建的md5不是嗎@@..
04/07 20:57, 9F
文章代碼(AID): #1BXMdJrI (C_Sharp)
文章代碼(AID): #1BXMdJrI (C_Sharp)