Hash
sha-256 在方面比 sha-1 更好,然後是雜湊大小?
假設我使用 SHA-256 創建了一個散列,然後只取散列的前 160 位作為結果。結果是否比 SHA-1 更安全?或者除了散列大小之外,這兩種算法是否同樣安全?(例如散列分佈不均勻和其他決定散列算法彈性的方法)
SHA-512 等其他 SHA 系列散列算法呢?
是的,SHA-256 在散列大小之外比 SHA-1 更安全。
特別是,截斷為 160 位的 SHA-256 比 SHA-1 更具有抗衝突性:我們可以努力為 SHA-1 進行沖突,例如 $ 2^{61.2} $ 雜湊值,而不是超過 $ 2^{80} $ 對於完整的雜湊,包括 SHA-256。
當已知所有目標平台都是 64 位時,SHA-512(和截斷版本)通常比 SHA-256 更受歡迎,因為它對於大輸入更快。它可能也更安全(但比安全更安全是毫無意義的)。
SHA-3和 SHAKE 具有不具有長度擴展屬性(與非截斷 SHA-1、SHA-256、SHA-512 相反)和(對於 SHAKE)具有可自定義輸出長度的進一步優勢。
據我了解,雜湊用作密碼生成器,我想來自主密碼、站點名稱和登錄名。理論上,我們需要一個以主密鑰作為密鑰的MAC,其餘的作為另一個輸入;或者只是通過使用密鑰開始散列消息來設計為 MAC 的散列。SHA-3 在這方面更勝一籌。如果我們使用 SHA-1 或 SHA-256,我們應該使用HMAC -SHA-1 或HMAC -SHA-256;但是如果我們不這樣做,OTOH 就沒有已知的攻擊。