2011-06-16 37 views
0

我正在編寫SHA512函數。當我檢查我在不同來源,Linux SHA512SUM工具和幾個網站上進行加密的文件,並通過舊版源代碼運行SHA512時,它們都會給出不同的哈希值。我認爲進入這個項目的意思是,如果正確實施,所有哈希算法都將輸出相同的哈希值,以用作校驗和。我在想這個錯誤嗎?如果我錯了,我該如何檢查我的工作是否正確?SHA512的所有實現都應該提供相同的哈希值嗎?

在此先感謝。

回答

3

是的,這是PKI的基本構建模塊之一:傳遞給散列的相同數據塊應始終返回相同的散列值。儘管如此:SHA-2(512)散列的結果是512位的塊,而不是字符串值,所以它將首先被編碼供人類消費,因此可能你會看到當使用不同的編碼時,看起來像是視覺上不同的結果。

+0

對於對字符串「Hi There」進行散列處理,Linux工具將前三個數字提供爲「526」,而http://hash.online-convert.com/sha512-generator網站的開頭爲「 523" 。只有真正的兩個網站達成一致,這種趨勢纔會繼續。我正在使用的源代碼使用二進制形式來實際顯示哈希。我如何知道哪個工具可以使用? – Matt 2011-06-16 17:23:50

+0

散列對位和字節起作用,而不是文本,因此您必須考慮輸入的解碼版本。首先,嘗試使用一些更相關的測試向量。通常情況下,空字符串是一個很好的測試向量,但您可以通過簡單的網頁搜索找到許多其他字符。 – Stephane 2011-06-17 08:52:21

+0

呵呵,'Hi there',當編碼爲直8位ASCII字符串時,會返回以下散列(十六進制編碼):523df363aa22c25478a478d25e6945f842509df8b77b0c755a40538a9a239ae178b3225f516bdb9e29f6d1cb7de4f2cf74e67fd85f6d9817c48890d686d51838 – Stephane 2011-06-17 08:57:00