このツールとは?
ハッシュ関数とは、任意の入力を固定長の16進数文字列(ダイジェストと呼ばれます)に変換する関数です。同じ入力からは常に同じダイジェストが得られ、たった1文字を変えるだけで結果はまったく別のものになります。このツールは MD5、SHA-1、SHA-256、SHA-384、SHA-512 という広く使われている5種類のアルゴリズムを同じ入力に対して実行するので、結果を比較したり必要なものだけ取り出したりできます。
これらのダイジェストは一方向であり、ハッシュ値から元のテキストを再構成することは数学的に事実上不可能です。ネット上で「ハッシュを復号する」と称されているものは、実際には照合作業にすぎません。そのサイトは、あなたのハッシュ値が、よくあるパスワードやフレーズをあらかじめ大量に計算しておいたテーブルのどれかと一致するかを調べているだけです。入力がそのテーブルになければ見つけようがありません。逆変換する関数自体が存在しないからです。
なぜこれを使うのか?
- 5種類のハッシュアルゴリズムを一度に計算でき、ツールを切り替える手間がありません。
- 算出した MD5、SHA-1、SHA-256 のチェックサムを公開されている値と比較し、整合性を確認できます。
- より長い出力が求められる用途向けに、より強力な SHA-384 や SHA-512 のダイジェストを生成できます。
- 任意のテキストから決定論的な ID やキャッシュキーを作成できます。
- 100% ローカル処理:入力内容はブラウザの外に出ないため、機微な内容でも安心して使えます。
使い方
- 入力欄にテキストを入力または貼り付けます。
- 「生成」をクリックします。
- MD5、SHA-1、SHA-256、SHA-384、SHA-512 の結果を確認します(利用先が大文字を求める場合は「大文字での出力」にチェックを入れてください)。
- 必要なハッシュの横にある「コピー」をクリックします。
例
入力
hello出力
MD5: 5d41402abc4b2a76b9719d911017c592
SHA-1: aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
SHA-256: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824ハッシュ値は決定論的です。「hello」はどのツールで計算しても、いつ計算しても、必ずこの値になります。
MD5だけで十分な場合
MD5のチェックサムだけをさっと計算したく、他の4種類のアルゴリズムの結果で画面が見づらくなるのが気になる場合は、単一アルゴリズムに特化した専用ツールのほうが結果を一目で確認できます。
5種類のアルゴリズムの比較
5種類とも一方向のハッシュ関数ですが、出力の長さとセキュリティ強度はそれぞれ異なります。
| アルゴリズム | 出力サイズ | セキュリティ状況 | 主な用途 |
|---|---|---|---|
| MD5 | 128ビット(16進数32文字) | 破られている——衝突を意図的に作り出せる | チェックサム、キャッシュキー、重複排除 |
| SHA-1 | 160ビット(16進数40文字) | 破られている——2017年以降、実用的な衝突攻撃が存在する | レガシーシステムとの互換性維持のみ |
| SHA-256 | 256ビット(16進数64文字) | 安全、現在の業界標準 | デジタル署名、TLS、ブロックチェーン、整合性検証 |
| SHA-384 | 384ビット(16進数96文字) | 安全、SHA-256より長い出力 | 高い信頼性が求められる署名、一部のTLS/PKI構成 |
| SHA-512 | 512ビット(16進数128文字) | 安全、本ツールの中で最も長い出力 | 最大限のダイジェスト長が必要なアプリケーション |
よくある使い方
- ダウンロードしたファイルを実行する前に、配布元が公開しているチェックサムと一致するか確認する。
- 任意のテキストから決定論的なキャッシュキーやIDを生成する。
- 2つの文書やレコードを直接比較しなくても、バイト単位で完全に一致するかどうかを確認する。
- アプリケーションが明示的に要求する場合に、より強力なダイジェスト(SHA-384/SHA-512)を生成する。
よくある質問
ハッシュ値から元のテキストを復号できますか?
できません。ハッシュ化は一方向になるよう設計されており、ダイジェストを元の入力に戻す鍵も数学的な操作も存在しません。「MD5を復号」「SHA-256を復号」とうたうサイトは、実際にはよくある入力とそのハッシュ値をあらかじめ大量に計算しておいた巨大な照合テーブルを検索しているだけです。元のテキストがそのテーブルに載っていないほど特殊であれば、誰であっても復元することはできません。
では、パスワードを平文で保存せずにどうやって照合しているのですか?
サイト側が保存しているのはパスワードそのものではなく、パスワードのハッシュ値です。ログイン時には入力された内容を同じ方法でハッシュ化し、保存されているハッシュ値と比較します。両者が一致すれば元のパスワードも一致していたことになり、サイト側は実際のパスワードを保存したり「復号」したりする必要が一切ありません。
どのアルゴリズムを使えばいいですか?
署名や証明書、ダウンロードファイルの検証などセキュリティに関わる用途では SHA-256 以上を使ってください。MD5 と SHA-1 はどちらも暗号学的に破られており、セキュリティ目的での信頼はできません。チェックサムやキャッシュキー、重複排除といったセキュリティに関わらない用途であれば、MD5 でも問題なく、計算も高速です。
同じテキストなのに別のツールと違うハッシュ値になるのはなぜですか?
たいていは目に見えない差が原因です。末尾の改行やスペース、改行コードの違い(\r\n と \n)、テキストエンコーディングの違いなどが考えられます。バイト単位で完全に同一の入力であれば、正しく実装されたツールならどれでも同じハッシュ値になります。
入力したテキストはサーバーに送信されますか?
送信されません。MD5 はブラウザ上で動作する JavaScript によって計算され、SHA-1、SHA-256、SHA-384、SHA-512 はブラウザに組み込まれた Web Crypto API を利用します。データが端末の外に出ることはありません。