Collision-Resistance
使用 SHA-3 時發生碰撞的可能性有多大?
我目前正在編寫一個網路應用程序,並且正在使用兩個隨機散列,它們位於字元串之前和之後,並且都是 50 個字元長(字母、數字和特殊字元)。
strlen($hash1) = 50; strlen($hash2) = 50; $sha3pw = sha3($hash1+$password+$hash2);
有人能夠僅從雜湊中找到衝突的可能性有多大?有機會還是理論上的機會?
通常,SHA-3 旨在提供[Math Processing Error] $ 2^{n/2} $ 碰撞阻力(和[Math Processing Error] $ 2^n $ 原像電阻)。
您尚未指定您正在談論的 SHA-3 (SHA3-224/256/384/512),但即使查看其中最小的 (SHA3-224) 並假設實現正確,發生衝突的可能性也是更多的是理論性質。
談論實現:我不太明白為什麼你會在密碼之前註入一個 50 字節的雜湊,然後在密碼之後注入另一個 50 字節的雜湊。這些可能只是您在那裡收集的一些與 Web 應用程序相關的資訊的兩個單獨的雜湊值……但如果這是為了增加某種安全性,我建議您查看 HMAC-SHA3 結構。然而,更好的是使用專門為此類任務設計的解決方案,如bcrypt、scrypt或pbkdf-2。
進一步閱讀:
知道塊長度可能會有所幫助[Math Processing Error] $ B $ 用於 HMAC 算法(意思是:摘要輸入塊的字節長度)在 FIPS 202 的表 3 中給出……SHA3-224 為 144 個字節,SHA3-256 為 136 個字節,SHA3-384 為 104 個字節, SHA3-512 為 72 個字節。