SHA-3(Keccak)雜湊計算工具(免費)

免費工具:在瀏覽器中即時計算輸入字串的 SHA-3 雜湊值(SHA3-224、SHA3-256、SHA3-384、SHA3-512)。SHA-3 是 NIST 於 2015 年以 FIPS 202 標準化的下一代雜湊函式,採用了與 SHA-2 根本不同的"海綿結構"。

已複製!

SHA-3 雜湊計算是什麼

SHA-3 雜湊計算是指將輸入的字串轉換為固定長度的資料。輸出長度有 SHA3-224、SHA3-256、SHA3-384、SHA3-512 四種,例如 SHA3-256 為256位元(32位元組,十六進位64位數),SHA3-512 為512位元(64位元組,十六進位128位數)。SHA-3 以2012年競賽選出的 Keccak 為基礎,由 NIST 於2015年作為 FIPS 202 標準化,是最新世代的雜湊函數;相同輸入永遠得到相同雜湊值,另一方面由雜湊值反推原始字串在計算上不可能,具有所謂的「單向性」。本工具只需選擇輸出長度並在輸入欄輸入字串,即會在瀏覽器上即時計算 SHA-3 雜湊值。

SHA-3 最大的特點,在於採用了與 SHA-2(SHA-256、SHA-512 等)根本不同的「海綿結構」設計。即使將來 SHA-2 被發現某種脆弱性,由於設計原理不同,一般認為影響也難以波及 SHA-3,因此它被定位為密碼學上的「保險」。計算全部在瀏覽器內完成,輸入的字串不會送往伺服器。

SHA-3 雜湊計算的使用方法

  1. 輸入想雜湊化的字串 在輸入欄輸入密碼或檔案內容等,想求取雜湊值的字串。
  2. 確認 SHA-3 雜湊值的顯示 選擇輸出長度(SHA3-224、SHA3-256、SHA3-384、SHA3-512)後,輸入的同時,SHA-3 雜湊值會以十六進位字串即時顯示。預設為 SHA3-256(64位數)。
  3. 視需要複製 按下「複製」按鈕即可將顯示中的雜湊值複製到剪貼簿。可直接貼入程式的測試碼或對照用途。

用好本工具的小技巧

  • SHA-3 由 Keccak 演算法演變而來,通過 NIST 2007—2012 年競賽選出,並於 2015 年作為 FIPS 202 標準化;輸出長度有 224、256、384、512 位四種,本工具可切換。
  • SHA-2 採用 Merkle-Damgård 構造,SHA-3 則採用全新的海綿構造(Sponge Construction)。
  • 目前無已知安全漏洞;若與現有系統相容,優先推薦 SHA-256,新設計可考慮 SHA-3。
  • Ethereum 內部使用的是 Keccak-256,與標準化後的 SHA-3 存在微妙差異(填充方式不同)。
  • 海綿構造非常適合硬體實現,同時也是任意長度輸出函式 SHAKE128/SHAKE256 的基礎。

SHA-3 雜湊計算派上用場的場合

新系統中雜湊函數的驗證

在考慮於即將設計的系統採用 SHA-3 時,可在瀏覽器上立即確認實際輸出值,並與實作程式碼的輸出相互核對。

理解使用 Keccak 系雜湊的規格

在調查如 Ethereum 這類採用自有 Keccak-256 的規格時,可將本工具輸出的 NIST 標準 SHA3-256 值與規格書或實作輸出的 Keccak-256 值並列比較,確認兩者並不一致。

作為密碼學學習與演算法比較的教材

若想比對同一輸入下 SHA-3 與 SHA-2 系的雜湊值差異有多大,可在多重雜湊一次計算工具中並列確認,理解會更深入。

作為與 SHA-256 分別使用的判斷依據

在猶豫是否該以與既有系統的相容性為優先而採用 SHA-256 時,可先實際產生兩者的雜湊值,確認要記載於規格書的格式。SHA-256 的計算請使用SHA-256 雜湊計算工具。

SHA-3 的相關術語

SHA-3
NIST 以 Keccak 演算法為基礎,於2015年作為 FIPS 202 標準化的雜湊函數名稱。定義有 SHA3-224、SHA3-256、SHA3-384、SHA3-512 四種輸出長度,本工具可切換計算全部四種(預設 SHA3-256)。
Keccak
由比利時的研究者團隊所設計、在 NIST 的 SHA-3 競賽中獲選的演算法。SHA-3 這個名稱是 NIST 標準化之後的稱呼,Keccak 本身則指涉在此之前即已存在的更廣泛概念。
海綿結構
將輸入資料「吸收」進內部狀態,再依需要的長度「擠出」輸出的 SHA-3 設計方式。與 SHA-2 採用的 Merkle–Damgård 結構不同,形成了針對 SHA-2 的攻擊手法難以直接套用的結構性差異。
抗碰撞性
指兩個不同輸入不易產生相同雜湊值的性質。SHA-3 現階段尚未發現可實用地找出碰撞的攻擊方法,可安全用於數位簽章與資料竄改偵測。
與 SHA-2 的差異
SHA-2(SHA-256、SHA-512 等)與 SHA-3 名稱相似,但內部結構截然不同,屬於不同系統的演算法。NIST 並非以取代 SHA-2 為目的,而是要求設計出 SHA-2 將來若被攻破時的替代方案。
單向雜湊函數
指由某個輸入計算輸出(雜湊值)很容易,但由輸出反推輸入在計算上不可能的函數。SHA-3 亦具備此性質,但由於計算速度快,難以抵禦暴力破解與字典攻擊,因此儲存密碼時建議使用 Argon2id 或 bcrypt 等專用演算法。

常見問題

兩者目前均安全可靠。與現有系統相容時推薦 SHA-256;新設計若希望採用獨立設計的演算法,可選擇 SHA-3。

不同。Ethereum 在 NIST 標準化之前就採用了 Keccak,填充方式不同,因此相同輸入會產生不同的雜湊值。計算 Ethereum 地址需使用專用的 Keccak 實現。

不能。SHA-3 是單向雜湊函式,在計算上無法從雜湊值逆推出原始資料,適合用於資料完整性校驗。但由於計算速度快,攻擊者可大量計算常用密碼的雜湊進行比對,因此儲存密碼時建議使用 Argon2id 或 bcrypt 等專用演算法。
工具君

閒話 ― Keccak 的誕生與 NIST 競賽

2005 年起,SHA-1 碰撞攻擊的可行性逐漸顯現,NIST 決定面向全球徵集下一代雜湊標準,並於 2007 年 11 月正式發布競賽公告。共有 64 個演算法參賽,歷經多輪評審,2012 年 10 月最終選出由 Joan Daemen(AES 聯合設計者)等人設計的 Keccak 演算法,並於 2015 年 8 月作為 FIPS 202 正式標準化。

需要特別指出的是,SHA-3 的設計初衷並非取代 SHA-2,而是作為"萬一 SHA-2 被破解時的備選方案"。兩者基於截然不同的設計理念,從而降低了同時被攻破的風險。

海綿構造的一大優勢是可擴充套件性——在此基礎上衍生出了支援任意輸出長度的 SHAKE128 和 SHAKE256(可擴充套件輸出函式,XOF),極大地拓展了雜湊函式的應用場景。