ハッシュ計算機
暗号Web Crypto で SHA-1/256/384/512 を、MD5 も計算します。Hex または Base64 で出力。
このページの内容
ハッシュとは?#
暗号学的ハッシュは、任意のバイトに対する一方向のフィンガープリントです。任意の長さのメッセージを入力すると、その入力に対する署名のように振る舞う固定長のダイジェストが戻ります——ビットを 1 つ変えただけで出力は完全に変わります。ハッシュは 2 つの実用的な問いに一度に答えます——「このデータは変わったか?」「このデータを短くて安定した ID で参照できるか?」——だからこそ、ファイルの完全性チェック、コンテンツアドレッシング、重複排除、パスワード保存の基礎に置かれています。
このページは 5 つのアルゴリズムを計算します: SHA-2 ファミリー(SHA-256、SHA-384、SHA-512)、SHA-1、そして MD5 です。4 つの SHA 系はブラウザのネイティブ Web Crypto エンジン(crypto.subtle.digest)——本番コードが使うのと同じプリミティブ——を通して走り、JavaScript の再実装ではありません。MD5 は Web Crypto の一部ではないため、実際に選んだときだけオンデマンドで読み込まれ、ページの初期ダウンロードには含まれません。
ハッシュは暗号化ではありません。非可逆です——ダイジェストから入力を再構築することはできません。2 者が鍵付きダイジェストを共有する必要があるなら HMAC を使い、操作を逆転させる必要があるなら共通鍵暗号を使ってください。
使い方#
- 左ペインに入力を貼り付けます。文字列、JSON の塊、設定スニペットなど、テキストなら何でも構いません。ハッシュ前にバイトは UTF-8 としてエンコードされます。
- アルゴリズムを選びます:
- SHA-256 — モダンな既定値。256 ビットのダイジェストで、TLS から Git、ブロックチェーンまで至る所で使われます。
- SHA-384 / SHA-512 — 同じファミリーのより長いダイジェスト。仕様がそれを要求するときに選びます。
- SHA-1 — 160 ビット。レガシー。チェックサムには適していますが、衝突耐性のある署名としては破綻しています。
- MD5 — 128 ビット。高速で遍在しますが、暗号学的には破綻しています。非セキュリティのチェックサムやレガシーのキャッシュキーに有用です。
- 出力エンコードを選びます: Hex(小文字、ダイジェストの一般的な慣習)または Base64(よりコンパクト、トークンで一般的)。
- サンプルをクリックして標準的なテスト文字列を読み込むか、クリアでやり直します。ダイジェストは右ペインにリアルタイムで更新されます。コピーで取り出せます。
主な特徴#
- ネイティブ Web Crypto。 SHA-1/256/384/512 は
crypto.subtle.digestで計算されます——ブラウザの監査済み実装であり、サードパーティライブラリではありません。 - 遅延 MD5。 MD5 実装は選んだときだけ取得されるため、最初のレンダリングを重くすることはありません。
- Hex または Base64。 再入力なしで 1 クリック切替。
- リアルタイムのステータス行。 アルゴリズムとダイジェストのバイト長を確認できるため、切り詰めや 1 オフの結果は明らかです。
- ゼロアップロード。 ハッシュは完全にブラウザ内で行われます。入力がサーバーに届くことはありません。
実例#
標準的な参照文字列は The quick brown fox jumps over the lazy dog です。アルゴリズムを SHA-256、出力を Hex に設定すると、ダイジェストは次のとおりです:
d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592
同じ文字列を SHA-1(Hex)にすると:
2fd4e1c67a2d28fced849ee1bb76e7391b93eb12
有用なエッジケースは空文字列です。何もハッシュしなくても、よく定義された空でないダイジェストが生成されます——SHA-256 では e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855、MD5 では d41d8cd98f00b204e9800998ecf8427e です。これらの空入力ベクトルは、このツール自身のテストスイートが正確性を検証する方法でもあります——もしあなたの出力が異なるなら、ページが改ざんされています。
よくある質問#
SHA-256 と MD5 のどちらを選ぶべきですか?#
セキュリティに関わるものには SHA-256 を: パスワードのソルト方式、署名付き URL、完全性証明、衝突攻撃に耐えなければならないコンテンツ ID です。MD5 は、衝突を偽造しようとする誰もいない非対抗的なチェックサム(手早い「このファイルは変わったか?」チェック、キャッシュキー)にだけ許容されます。不確かなら、SHA-256 を既定にしてください。
なぜ同じ入力が常に同じダイジェストになるのですか?#
ハッシュは決定的です——このレイヤーには(bcrypt と違って)ランダムなソルトは関わりません。その決定性こそがコンテンツアドレッシングの要点です: 同じバイトは常に同じフィンガープリントを生成しなければなりません。裏を返せば、同じ秘密をハッシュした 2 人は同じダイジェストを得るため、平文のハッシュはパスワードの保存方法としてはひどいものになります。
ハッシュから元を復元できますか?#
いいえ。暗号学的ハッシュは設計上一方向関数であり、鍵も逆操作もありません。「SHA-256 を復号する」は範囲違いの問いです。唯一の攻撃は総当たり(一致するまで入力を試すこと)であり、それこそが、ソルトなしでハッシュされていても弱いパスワードが危険な理由です。
MD5 が普段使うツールと違うのはなぜですか?#
ほぼ常にバイト表現の不一致です: 末尾の改行、異なる改行コード(CRLF 対 LF)、あるいは相手ツールが UTF-16 表現をハッシュしているのにこのページは UTF-8 をハッシュしている、などです。画面上のテキストではなく、生のバイトを比較してください。