マルチアルゴリズム ハッシュジェネレーター

テキストを MD5、SHA-1、SHA-2、SHA-3、Keccak、RIPEMD-160、BLAKE2、BLAKE3、Whirlpool、SM3、CRC32 など 20 種のアルゴリズムで一度にハッシュ化。16 進か Base64 で即時表示します。

入力するとすべてのダイジェストが即時に更新されます。空欄のときは空文字列のダイジェストを表示します。

すべてブラウザ内で実行されます。データがアップロードされることはありません。

ハッシュジェネレーターとは?

入力したテキストのダイジェストを、MD5、SHA-1、SHA-224/256/384/512、SHA3-224/256/384/512、Keccak-256/512、RIPEMD-160、BLAKE2b-512、BLAKE2s-256、BLAKE3、Whirlpool、SM3、MD4、CRC32 の 20 種のアルゴリズムで同時に計算します。比較したり、必要なものを探したりできます。脆弱なアルゴリズムには印が付きます。

ハッシュジェネレーターの使い方

  1. 入力 にテキストを入力または貼り付けると、すべてのダイジェストが即時に更新されます。
  2. UTF-8 テキストの代わりに生のバイト列をハッシュするには、入力のエンコーディングを Hex に切り替えます。
  3. 出力形式 を選びます:小文字の 16 進、大文字の 16 進、または Base64。
  4. 表から単一の値をコピーするか、コピー で全行をコピーします。

例

入力
abc
出力
MD5: 900150983cd24fb0d6963f7d28e17f72
SHA-1: a9993e364706816aba3e25717850c26c9cd0d89d
SHA-256: ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
CRC32: 352441c2

抜粋です。ツールは 20 種すべてのアルゴリズムを表示します。

ハッシュジェネレーターを使うべき場面

文字列のダイジェストを複数のアルゴリズムで調べたり、既知のハッシュを生成したアルゴリズムを特定したり、実装を比較したりするときに使ってください。パスワードの保存に高速なハッシュは使わないでください(bcrypt、scrypt、Argon2 を使います)。ファイルには、改行コードやエンコーディングが変わらないよう、ファイルチェックサムのツールを使ってください。

ハッシュジェネレーターの仕組み

テキストは UTF-8 にエンコードされ(または 16 進からデコードされ)、そのバイト列が hash-wasm の各アルゴリズムの WebAssembly 実装に渡されます。SHA-2 は Merkle–Damgård 構造、SHA-3 と Keccak はスポンジ構造(違いはパディングだけ)、BLAKE2/BLAKE3 は ChaCha の置換が基になっており、CRC32 は暗号学的ハッシュではなくチェックサムです。結果は単体テストで FIPS 180-4、FIPS 202、RFC 7693、Node.js/OpenSSL と照合されています。

一般的な使用例

  • すべての出力と照らし合わせて、既知のハッシュを生成したアルゴリズムを特定する
  • テストフィクスチャ用に文字列の SHA-256 と SHA3-256 を取得する
  • テキストの Keccak-256 ハッシュ(Ethereum で使用)を計算する
  • 短い文字列の CRC32 チェックサムを確認する
  • 入力の小さな変化がすべてのダイジェストを変えることを学生に見せる

セキュリティ注意事項

入力はローカルでハッシュ化され、アップロードされません。高速なハッシュはパスワードの保存には向きません。

よくある質問

SHA3-256 と Keccak-256 の違いは何ですか?

どちらも Keccak スポンジを使いますが、SHA3-256(FIPS 202)は元の Keccak 提案とパディングが異なります。Ethereum は Keccak-256 を使うため、同じ入力でも 2 つの結果は異なります。

MD5、SHA-1、MD4、CRC32 が脆弱と表示されるのはなぜですか?

これらは衝突を作り出せるため、署名、証明書、攻撃者に対する完全性の確認には使えません。セキュリティ目的でないチェックサムなら今も問題ありません。

ハッシュを元に戻せますか?

いいえ。ハッシュは一方向です。「復号」をうたうサイトは、よくある入力の事前計算済みの値を検索しているだけです。

自分のプログラムで違うハッシュになるのはなぜですか?

多くはエンコーディングが原因です。末尾の改行、Windows の改行コード、UTF-8 以外のエンコーディングでバイト列が変わります。正確なバイト列をハッシュするには Hex 入力を使ってください。

他のカテゴリを見る