SHA-3 雜湊計算
在瀏覽器中即時計算輸入字串的 SHA-3(Keccak)雜湊值。SHA-3 是 NIST 於 2012 年標準化的下一代雜湊函式,採用了與 SHA-2 根本不同的"海綿結構"。
已複製!
Tips
- SHA-3 由 Keccak 演算法演變而來,通過 NIST 2007—2012 年競賽選出,輸出 256 位。
- SHA-2 採用 Merkle-Damgård 構造,SHA-3 則採用全新的海綿構造(Sponge Construction)。
- 目前無已知安全漏洞;若與現有系統相容,優先推薦 SHA-256,新設計可考慮 SHA-3。
- Ethereum 內部使用的是 Keccak-256,與標準化後的 SHA-3 存在微妙差異(填充方式不同)。
- 海綿構造非常適合硬體實現,同時也是任意長度輸出函式 SHAKE128/SHAKE256 的基礎。
常見問題
兩者目前均安全可靠。與現有系統相容時推薦 SHA-256;新設計若希望採用獨立設計的演算法,可選擇 SHA-3。
不同。Ethereum 在 NIST 標準化之前就採用了 Keccak,填充方式不同,因此相同輸入會產生不同的雜湊值。計算 Ethereum 地址需使用專用的 Keccak 實現。
不能。SHA-3 是單向雜湊函式,在計算上無法從雜湊值逆推出原始資料,因此可安全用於密碼驗證和資料完整性校驗。
閒話 ― Keccak 的誕生與 NIST 競賽
2006 年前後,SHA-1 碰撞攻擊的可行性逐漸顯現,NIST 決定面向全球徵集下一代雜湊標準,並於 2007 年正式啟動競賽。共有 64 個演算法參賽,歷經多輪評審,2012 年最終選出由 Joan Daemen(AES 聯合設計者)領銜的 Keccak 演算法。
需要特別指出的是,SHA-3 的設計初衷並非取代 SHA-2,而是作為"萬一 SHA-2 被破解時的備選方案"。兩者基於截然不同的設計理念,從而降低了同時被攻破的風險。
海綿構造的一大優勢是可擴充套件性——在此基礎上衍生出了支援任意輸出長度的 SHAKE128 和 SHAKE256(可擴充套件輸出函式,XOF),極大地拓展了雜湊函式的應用場景。