コンテンツへスキップ
Toova
すべてのツール

Keccak-256 ハッシュ

プライバシー優先設計 — すべてブラウザ内で処理します

任意の UTF-8 文字列を入力欄に貼り付けると、32 バイトの Keccak-256 ダイジェストが得られます。Ethereum はこれを至るところで使用しています。EIP-55 チェックサムアドレス、関数セレクタ、ストレージスロットの導出、CREATE2 によるコントラクトアドレスなどです。

Keccak-256 と SHA3-256 の違い

Keccak-256 は SHA3 になる前に Keccak が NIST に提出したものでした。最終的な SHA3 規格では多重レート方式のパディングに 2 ビットが追加されたため、同じ入力でも SHA3-256 と Keccak-256 は異なる結果になります。Ethereum はオンチェーンのハッシュをウォレットやインデクサ、エクスプローラなどの Keccak-256 利用と一致させるために、元の Keccak を使い続けています。

Ethereum での利用箇所

関数セレクタは keccak256("transfer(address,uint256)") のような正規シグネチャの先頭 4 バイトです。マッピングのストレージスロットは keccak256(abi.encode(key, slot)) から導出されます。EIP-55 は小文字アドレスの keccak256 に基づいて大文字/小文字を切り替えます。CREATE2 のコントラクトアドレスは deployer、salt、bytecode を入力とする keccak256 です。

実装の動作

このページはコンパクトな Keccak-f[1600] 置換を JavaScript で同梱しています。Web Crypto は Keccak-256 を公開していません。空文字列に対する既知のダイジェスト c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 と比較することで動作確認ができます。入力も出力もタブから外へ出ません。

よくある質問

Keccak-256 は SHA3-256 と同じですか?
いいえ。Keccak-256 は Keccak が NIST に提出した内容で、SHA3-256 は最終化前にパディングを 2 ビット拡張しています。同じ入力でも出力が異なり、Ethereum と EVM は元の Keccak-256 を使います。
Ethereum のどこで出てきますか?
関数セレクタ、ストレージスロットの導出、EIP-55 チェックサム、CREATE2 の決定論アドレス、256 ビットのダイジェストを必要とする大半の署名スキームです。
実装の検証方法は?
空文字列をハッシュして c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 と比較してください。差異があればパディングかアルゴリズムが誤っています。
同じ入力なら出力は同じですか?
同じです。Keccak-256 は純関数で、同じ UTF-8 バイト列からは常に同じ 32 バイトのダイジェストが生まれます。
Toova は入力を記録しますか?
記録しません。このタブ内で完結し、入力やダイジェストがサーバへ送られることはありません。
ABI エンコーディングに使えますか?
transfer(address,uint256) のような正規シグネチャに対して Keccak-256 を計算し、その先頭 4 バイトを取れば、セレクタが想定する 4 バイトのプレフィックスになります。