我需要在Groovy(Grails的)一個MD5哈希,讓完全相同的結果作爲一個我在C#C#MD5哈希Groovy的MD5哈希
的C#代碼使用MD5函數
tmpHash = new MD5CryptoServiceProvider().ComputeHash(tmpIn);
什麼功能是有在Groovy,我可以使用?
我試圖
licenseKeys = MessageDigest.getInstance("MD5").digest(tempAr).encodeHex()
但是,這給了我幾乎相同的結果,有些時候它在不同的位置多餘的零,該代碼的其餘部分並不像它只是使字符串轉換成字節和我重要知道MD5是舊的,不安全的,但仍然有使用它
當輸入AAAAAAAA C#的輸出爲
87D746DB2DB357978BC97C92123622
和常規
87D746DB2D0B357978BC970C92123622
但隨着輸入作爲AAAAA其同
C94EE213E7FA6887256D143E924227C4
獲得在常規的tempAr我做這個
byte[] array = temp.getBytes("UTF-8")
byte[] tempAr = new byte[array.size() * 2]
// to add 0 after each byte
for (int i = 0; i < tempAr.size(); i++){
if (!(i%2)){
tempAr[i] = array[((int)(i * 0.5))]
}
else{
tempAr[i] = 0
}
}
我這是因爲這個原因舊的C#代碼做它好,我知道它的怪異......
C#代碼以獲得字節是
tmpIn = UnicodeEncoding.Unicode.GetBytes(txtFirstname.Text + txtLastname.Text);
額外的零在哪裏?你有一個例子嗎?你期望什麼?你如何定義「有時」? –
一般來說,第一個錯誤是:「make a ** MD5 ** hash」,而對於某些用法,MD5通常是可以接受的,現在是時候移動到至少SHA-256。 – zaph
當我使用標準功能並得到奇怪和/或不正確的結果時,我的第一個想法是「我做錯了」™。請提供[MCVE],其中包含輸入和輸出數據。 – zaph