2013-07-22 48 views
4

這到底是什麼?我試圖查找它,但沒有找到任何東西。MessageDigest.update(byte [])是做什麼的?

詢問的原因是我想將SALT byte[]合併到一個值中,然後將其散列。所以它應該是這樣的(僞代碼)來完成:

MessageDigest.update(SALT); 
MessageDigest.update(value); 
digestValue = MessageDigest.digest(); 
// Where SALT, value and digestValue are array bytes, byte[] 

這是否添加這兩種SALTvalue到最終消化,或者我應該兩個變量合併成一個,然後update一次?

我找不到任何文件的答案,任何澄清將不勝感激。

謝謝,歡呼聲。

+1

您的代碼看起來不錯。它是創造價值的鹽漬摘要的正確方法。 – Qwerky

+0

你看過[API文檔](http://docs.oracle.com/javase/7/docs/api/java/security/MessageDigest.html)嗎? – Jesper

+0

@Qwerky謝謝您的確認:) – LuckyMe

回答

5

MessageDigest已結算,請致電MessageDigest.update(byte[] input)累積摘要更新,直到我們呼叫MessageDigest.digest。運行這個測試,以確保:

MessageDigest md1 = MessageDigest.getInstance("MD5"); 
    md1.update(new byte[] {1, 2}); 
    md1.update(new byte[] {3, 4}); 
    System.out.println(Arrays.toString(md1.digest())); 

    MessageDigest md2 = MessageDigest.getInstance("MD5"); 
    md2.update(new byte[] {1, 2, 3, 4}); 
    System.out.println(Arrays.toString(md2.digest())); 

輸出

[8, -42, -64, 90, 33, 81, 42, 121, -95, -33, -21, -99, 42, -113, 38, 47] 
[8, -42, -64, 90, 33, 81, 42, 121, -95, -33, -21, -99, 42, -113, 38, 47] 
+0

欣賞詳細的解釋,跟進問題:所以'update'所做的一切就是將數組連接起來,沒有其他特別的東西? – LuckyMe

+0

當我們給MessageDigest一個數組時,它只是迭代這個數組並且按字節更新摘要 –