ハッシュジェネレーター
ブラウザで任意のテキストからMD5・SHA-1・SHA-256・SHA-512のハッシュ値を生成します。サーバーには何も送信されず、すべてWeb Crypto APIで処理されます。
ハッシュとは
暗号学的ハッシュ関数は任意の入力を固定長の文字列に変換する関数です。同じ入力は常に同じハッシュを生みますが、入力がわずかに変わるだけでハッシュはまったく別物になります。これを雪崩効果と呼びます。ハッシュは一方向で、ハッシュから元の入力を復元することはできません。
主な用途はパスワード保存(パスワードではなくハッシュを保存)、ファイルの改ざん検出(ダウンロード後にチェックサムを比較)、デジタル署名、データの重複排除などです。現在最もよく使われているのはSHA-256で、MD5やSHA-1は暗号用途では安全ではないとされていますが、単なるチェックサム用途では依然として有用です。
アルゴリズムの使い分け
MD5(128ビット): 高速で対応環境も豊富ですが、衝突が実証されているため暗号用途では安全ではありません。暗号目的ではないチェックサム、ハッシュテーブル、キャッシュキーなどには依然有用です。
SHA-1(160ビット): 2017年に衝突攻撃が実証され、セキュリティ用途では非推奨となりました。レガシーなシステムやgitのコミットハッシュに残っています(gitもSHA-256への移行を進めています)。
SHA-256(256ビット): 現在の主力。TLS/SSL、Bitcoin、証明書署名など現代の暗号プロトコルのほとんどで使われます。新規用途ではほぼ常にこれを選ぶのが無難です。
SHA-512(512ビット): 出力が長くセキュリティマージンがわずかに強化されています。より長いハッシュが必要な場合や、安全側に倒したい場合に選びます。
ハッシュと暗号化の違い
ハッシュは一方向で、元データを復元することはできず、候補の入力が一致するかを検証することしかできません。暗号化は双方向で、正しい鍵があれば復号できます。ハッシュは検証用途(パスワードチェック、ファイル整合性など)、暗号化は機密性の確保用途(通信・保存データの保護)です。
ユニークな識別子が必要な場合は、UUIDジェネレーターをご利用ください。
MD5 vs SHA-1 vs SHA-256 vs SHA-512: 比較
ユースケースに合ったハッシュアルゴリズムを選択してください — セキュリティ要件、出力サイズ、パフォーマンスは大きく異なります。
| 特徴 | MD5 | SHA-1 | SHA-256 推奨 | SHA-512 |
|---|---|---|---|---|
| 出力長(ビット) | 128 | 160 | 256 | 512 |
| 出力(16進数文字) | 32 | 40 | 64 | 128 |
| 速度(相対) | 最速 | 速い | 中程度 | より遅い |
| セキュリティステータス | 破損 — 衝突が既知 | 非推奨 | 安全 | 安全 |
| 一般的な用途 | チェックサムのみ | レガシーシステム | TLS、コード署名 | 高セキュリティアプリ |
| NIST推奨 | いいえ | いいえ | はい | はい |
MD5とSHA-1はセキュリティ目的で暗号学的に破られています。新しい実装にはSHA-256またはSHA-512を使用してください。
主な用途
- ファイルの整合性確認:転送前後のファイルのSHA-256ハッシュを生成して、破損や改ざんがないことを確認できます。
- パスワードストレージのプロトタイピング:ウェブアプリでのサーバーサイドストレージを実装する前に、パスワードをどのようにハッシュ化すべきか(SHA-256、SHA-512)をプロトタイプで確認できます。
- API署名の生成:多くのAPIはリクエスト認証にHMAC-SHA256署名を要求します。ハッシュツールで署名の構築をテストできます。
- ブロックチェーンの学習:ブロックヘッダーをハッシュし、1バイト変えるだけで出力がどう変わるかを観察して、ビットコインのプルーフ・オブ・ワークの仕組みを理解できます。
- 重複排除キー:ファイルやデータベースレコードの重複を、全内容を保存・比較せずにコンテンツハッシュで検出できます。
- データの匿名化:元の値を保存せずに分析できるよう、メールアドレスや電話番号などの個人情報をハッシュ化できます。
- Gitコミットの理解:GitはSHA-1/SHA-256でコミットを識別します。文字列をハッシュ化することで、GitがオブジェクトにユニークなIDを割り当てる方法が理解できます。
FAQ
MD5は今でも使って大丈夫ですか?
セキュリティ用途には使わないでください。パスワード、デジタル署名、攻撃者が衝突を利用できる場面では不適切です。一方、チェックサム・キャッシュキー・重複排除のように速度が衝突耐性より重要な非暗号用途では引き続き使えます。
ハッシュを逆変換して元のテキストに戻せますか?
できません。ハッシュは設計上一方向で、ハッシュ関数は逆関数を持ちません。辞書攻撃やレインボーテーブルでよくある入力は当てられる可能性がある(そのためパスワードハッシュにはソルトが必要です)ものの、ハッシュ自体を逆変換することはできません。
アルゴリズムによってハッシュの長さが違うのはなぜ?
各アルゴリズムごとに出力サイズが固定されているためです。MD5は32桁の16進文字(128ビット)、SHA-1は40桁(160ビット)、SHA-256は64桁(256ビット)、SHA-512は128桁(512ビット)です。長いハッシュほど出力空間が広く、衝突耐性も高くなります。
ハッシュジェネレーターはテキストをサーバーに送信しますか?
いいえ。すべてのハッシュ処理はブラウザに内蔵されたWeb Crypto APIを使ってクライアントサイドで行われます。テキストがデバイスの外に出ることはありません。
ハッシュを逆変換して元のテキストに戻せますか?
いいえ。暗号学的ハッシュ関数は一方向で、ハッシュから元のテキストを再現することは計算上不可能です。これは設計によるもので、セキュリティにおけるハッシュの有用性の根拠です。
数字で見る
- SHA-256は256ビット(32バイト)の出力を生成します — 2^256の可能な値は観測可能な宇宙の原子数を超えます
- MD5は2004年に衝突攻撃により暗号学的に破られました(Wang & Yu)。NISTはすべてのセキュリティ用途での使用を非推奨にしました
- NISTは2015年にSHA-2のバックアップとして異なるスポンジ構造を使ったSHA-3(Keccak)を標準化しました
- ビットコインのブロックチェーンはSHA-256に依存しています — 有効なブロックハッシュの発見にはネットワーク全体で毎秒約10^21のハッシュ演算が必要です