我正在開發一個「開放的分佈式雲存儲系統」。有沒有一種快速散列算法能夠抵抗故意的碰撞,如果是,哪一個?
開放我的意思是任何人都可以參與託管文件。
我目前的設計使用文件內容的sha1散列作爲全局文件ID。
給出客戶端已經知道這個哈希值並從「帶寬捐獻者」接收文件。
客戶端現在需要通過生成散列並將其與期望值進行比較來驗證文件確實是否正確。
不過我擔心的是有人可能會故意修改一個文件來產生相同的散列。據我所知,對於CRC家族的哈希來說這很容易實現。一些「谷歌搜索」顯示了很多關於MD5相同的說法。
現在我的問題是:有沒有滿足beeing
- 快大數據量的
- 以及分佈在散列範圍的標準散列算法(又名「獨一無二」)
- 具有
- 是故意的衝突攻擊
所有的O耐足夠目標範圍(「比特長度」)這意味着我可以考慮實現一個服務於我的需求的設置,其中包含一個祕密組件,例如一個祕密的openssl密鑰或一個散列函數的共享密鑰。
不幸的是我不能用這個。
你想要的是一個安全的散列函數。對於你的應用程序來說,速度絕對應該是安全性的第二要素 - 記住,諸如SHA-1或SHA-256等函數的散列速度要比客戶端可以接收文件的速度快幾個數量級反正網絡連接。 –