Collision-Resistance

通過結合 MD5 和 SHA-2 避免衝突

  • September 4, 2020

通常建議長字元列的散列可用於數據庫中的索引,但衝突的可能性是唯一索引的一個問題。雖然我知道 MD5 和 SHA-256 都可以(很少)產生衝突,但我想知道它們在同一點與相同輸入發生衝突的可能性有多大?換句話說,如果我通過對同一個字元欄位執行 MD5 和 SHA-2 並將它們組合成唯一鍵來生成唯一鍵,那麼這種衝突是否無衝突。

目前沒有已知的 SHA-256 衝突,它可以安全地用於散列長文本,並且您可以確信不會偶然發生衝突。

一般來說,如果我們有兩個不同的雜湊函式和 $ f $ 和 $ g $ 你散列一些輸入 $ x $ 同時使用並使用連接 $ f(x)||g(x) $ 它的抗碰撞性將比單獨使用任何一種功能都要好,在某些情況下要好得多。如果函式不相關並且您只擔心偶然碰撞,則碰撞的可能性將是每個函式單獨發生碰撞的可能性的乘積。然而,面對利用這些功能的弱點的攻擊者,這最後一條語句將不成立。單獨發現碰撞仍然比僅在兩者之一中發現碰撞更難,但可能不會明顯更難。

其他組合功能的技術,例如 $ f(g(x)) $ 不明智,不會增加安全性,因為任何碰撞 $ g $ 也是構圖上的碰撞。

引用自:https://crypto.stackexchange.com/questions/83727