首先,我必須發出標準註釋散列未簽署。數字簽名是涉及密鑰和驗證者的過程。在這裏,您只是想散列一些數據並將散列值保存在一個「安全」的位置,這樣就可以將散列值的完整性擴展到散列數據:確保散列值不被篡改,並且通過在數據元素上重新計算散列並找到相同的散列值,您可以確信字段元素不會被篡改。
然後我必須發出第二個標準評論,那就是沒有性能問題,直到在現實條件下適當測量。散列速度很快。即使是一個不太快的散列函數,一臺基本的PC也將能夠每秒執行數百萬次散列操作。
現在,我看到你想要使用「鹽」。鹽是一段公共數據,其目的是爲了每個實例不同,以防止解密成本分攤。這在有一些加密數據的設置中是有意義的;就我所見,從你所描述的內容來看,你的問題沒有任何加密。
......除非您確實表示您將保留您的「鹽」祕密,並將散列值與數據字段一起存儲。在這種情況下,我們不再討論哈希了。你的「鹽」會被更合適地稱爲「關鍵」,因爲它意味着保密。你不想要一個散列,但一個MAC。有時,MAC被稱爲「簽名」。這不合適,但比調用哈希「簽名」更不合適。如果你想要的是一個MAC(你的鹽真的是一個關鍵),那麼你應該使用你的建設。建立一個MAC不是一件容易的事情:當涉及到安全性時,許多手工製造的建築都會失敗。幸運的是,有一個稱爲HMAC的標準MAC。 HMAC以智能的方式使用底層哈希函數(使用SHA-256)和密鑰,將它們變成MAC。 HMAC受許多加密庫支持。
恭喜你從好的密碼技術人員那裏得到了兩個可靠的答案。 – rook 2011-02-14 22:48:31