跳至內容
Toova
所有工具

Keccak-256 雜湊

注重隱私的設計 — 完全在您的瀏覽器中執行

把任意 UTF-8 字串放進輸入框,即可取得 32 byte 的 Keccak-256 摘要。Ethereum 在 EIP-55 校驗位址、function selector、storage slot 推導、CREATE2 合約位址等處處皆使用此演算法。

Keccak-256 與 SHA3-256

Keccak-256 是 Keccak 在成為 SHA3 前提交給 NIST 的方案,最終的 SHA3 標準在多速率 padding 上多加了 2 個位元,因此相同輸入的 SHA3-256 與 Keccak-256 結果不同。Ethereum 保留原始 Keccak,讓鏈上雜湊與同樣採用 Keccak-256 的錢包、索引器與瀏覽器相符。

Ethereum 的使用位置

function selector 為 keccak256("transfer(address,uint256)") 等正規簽名的前 4 byte;mapping 的 storage slot 推導為 keccak256(abi.encode(key, slot));EIP-55 依據小寫地址的 keccak256 決定大小寫;CREATE2 合約位址為 keccak256 over deployer、salt 與 bytecode。

實作如何執行

本頁面內建精簡的 Keccak-f[1600] 置換,Web Crypto 不提供此演算法。你可以用空字串對照已知摘要 c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 來驗證輸入與輸出全程不離開本分頁。

常見問題

Keccak-256 與 SHA3-256 是同一個嗎?
不是。Keccak-256 是 Keccak 提交 NIST 的版本;SHA3-256 在最終化前新增了兩個 padding 位元。同一輸入會產生不同輸出。Ethereum 與 EVM 使用原始 Keccak-256。
它在 Ethereum 哪裡用?
function selector、storage slot 推導、EIP-55 校驗位址、CREATE2 確定性位址,以及多數需要 256 bit 摘要的簽章機制。
要如何驗證實作?
對空字串求雜湊,比較是否等於 c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470。任何差異表示 padding 或演算法不正確。
相同輸入的輸出是否固定?
固定。Keccak-256 是純函式,同一 UTF-8 位元組序列在任何瀏覽器或執行中都會產生相同 32 byte 摘要。
Toova 會紀錄輸入嗎?
不會。雜湊全在本分頁完成,字串與摘要不會送出。
可用於 ABI 編碼嗎?
對正規函式簽名(例如 transfer(address,uint256))做 Keccak-256,再取前 4 byte 即可,這正是 selector 所期望的前綴。