MD5ハッシュジェネレーター オンライン - 無料MD5暗号化ツール
入力したテキストからMD5ハッシュ値をブラウザ内で瞬時に計算する無料ツール。128ビットのチェックサムを32文字の16進数文字列として出力し、処理はすべてクライアント側で行われるためデータはサーバーに送信されない。ファイルの検証やデータ整合性の確認、簡単なチェックサム作成に使える。
MD5ハッシュジェネレーター
ドキュメンテーション
MD5ハッシュジェネレーターとは?
MD5ハッシュジェネレーターは、任意のテキストをMD5ハッシュと呼ばれる固定長のコードに変換するツールです。MD5は、1992年に公開されたメッセージダイジェストアルゴリズム5を指します。単語、文、ファイル全体のいずれを入力しても、常に同じ32文字の結果が生成され、入力をほんの少し変更するだけで結果は完全に異なるものになります。このツールはJavaScriptを使ってブラウザー内でアルゴリズムを直接実行するため、入力したテキストがサーバーに送信されることはありません。
MD5ハッシュの仕組み
MD5は一方向関数です。長さを問わず入力を受け取り、ハッシュまたはダイジェストと呼ばれる固定サイズの出力を生成します。「一方向」とは、処理を逆戻りできないという意味です。ハッシュだけから元のテキストを復元する方法はありません。
このアルゴリズムは、次の段階でデータを処理します。
- メッセージをバイト列に変換し、長さが512ビットの倍数になるようパディングを追加します。
- 元のメッセージ長を記録する64ビットのフィールドを付加します。
- 4つの32ビット数値に固定された初期値を設定します。
- パディングされたメッセージを512ビットのブロックに分割します。各ブロックは16個の演算による4ラウンドを通過するため、ブロックごとに64個の演算が行われます。各演算では、ビット単位の関数、加算、ビット回転を使って、ブロックのデータを4つの実行中の数値に混ぜ合わせます。
- すべてのブロックの処理が終わると、四つの32ビット数値を連結し、十六進数の数字として書き出します。
結果は常に128ビット長で、32個の十六進文字(0-9とa〜f)で表示されます。これは、128ビット出力の各バイトを二桁の十六進数で書くためです。
ハッシュ関数が安全とみなされるには、3つの性質が必要です。同じ入力から常に同じ出力が得られること、選んだハッシュを生成する入力を見つけるのが現実的に困難であること、異なる2つの入力から同じハッシュを生成するのが現実的に困難であることです。MD5には1つ目の性質が今もありますが、残り2つは破られており、詳しくは以下で説明します。
MD5ハッシュの例
「hello」という単語をMD5でハッシュ化すると、次のようになります。
1Input: hello
2Output: 5d41402abc4b2a76b9719d911017c592
3空文字列をハッシュ化した場合も、固定長の空でない結果が生成されます。パディングと長さフィールドもアルゴリズムを通過するためです。
1Input: (empty string)
2Output: d41d8cd98f00b204e9800998ecf8427e
31文字を変更するだけでも、たとえば最初の文字を大文字にして「Hello」とすると、まったく異なる32文字の文字列になります。これはアバランシェ効果と呼ばれ、入力の小さな変更が出力に大きく予測不能な変化をもたらします。
このMD5ハッシュジェネレーターの使い方
- 入力欄にテキストを入力または貼り付けます。
- テキストの変更に応じてハッシュが自動的に更新され、ボックスの下に表示されます。別のボタンを押す必要はありません。
- 「Copy」をクリックすると、32文字のハッシュがクリップボードにコピーされます。
- ハッシュの一部から生成された小さな色付きバーが結果の下に表示され、2つのハッシュが異なることをすばやく視覚的に確認できます。
計算はブラウザー自体のJavaScriptエンジンで行われるため、ページの読み込み後はインターネット接続が不要で、入力したテキストがどこかに送信されることもありません。
MD5ハッシュの一般的な用途
- ダウンロードしたファイルのハッシュを公開された値と比較し、転送中に破損していないことを確認する。
- ハッシュが長い値の短い固定サイズの代替表現になるため、データの検索キーやキャッシュ識別子を作成する。
- ファイル全体の内容ではなくハッシュを比較して、重複ファイルを検出する。
- バージョン管理システムやビルドシステムで、ファイルが変更されたかどうかをハッシュによって検出する。
MD5は、パスワードの保存、デジタル署名の生成、その他攻撃者がハッシュの偽造や逆算を試みる可能性のある用途には適していません。その理由は次のセクションで説明します。
MD5の歴史
アメリカの暗号学者ロナルド・リベストは、以前のMD4アルゴリズムの後継として、1991年にMD5を設計しました。Internet Engineering Task Forceは (3,360 cm)1992年に仕様をRFC1321として公開し、MD5はチェックサムに、そして一時期はセキュリティ用途にも広く使われるようになりました。
MD5の内部構造の弱点は、早くも1996年に指摘されていました。2004年には、暗号学者の王小雲が率いる研究チームが、同じMD5ハッシュを生成する異なる2つの入力を実際に作成する方法を示しました。この欠陥は衝突と呼ばれます。2008年には、別の研究者グループが衝突攻撃を使い、当時のブラウザーが正規のものとして受け入れていた不正なウェブサイトのセキュリティ証明書を偽造しました。これらの結果を受け、セキュリティ標準策定機関は、偽造が問題になる用途でMD5を推奨しなくなりました。
MD5のセキュリティ上の弱点
- 衝突耐性が破られています。同じMD5ハッシュを持つ異なる2つの入力を、計算上実用的な方法で構成できます。
- パスワードに対しては、その速度が不利に働きます。MD5は高速計算を目的に設計されており、チェックサムには便利ですが、パスワード保存には不向きです。一般的なハードウェアでも、攻撃者が毎秒数十億の候補を試せるためです。
- 総当たり攻撃よりも高速なプリイメージ攻撃は、公に知られていません。そのため、ハッシュから正確な入力を復元するのは依然として困難ですが、それだけでMD5がセキュリティに関わる用途に適することにはなりません。
これらの問題により、MD5はパスワード保存、デジタル署名、SSL/TLS証明書、その他誰かが意図的に一致するハッシュを生成しようとする可能性のある用途には不適切です。
MD5の代替
- SHA-256はSHA-2ファミリーの一部で、256ビットのハッシュを生成し、実用的な衝突攻撃は知られていません。
- SHA-3は、SHA-2とは異なる内部設計に基づく新しい標準です。
- BLAKE2は高速なハッシュ関数で、セキュリティはSHA-3と同程度と考えられています。
- Bcrypt、scrypt、Argon2はパスワード保存のために設計されており、意図的に低速で、ハードウェアアクセラレーションによる推測攻撃に強いアルゴリズムです。
よくある質問
現在、MD5は何に使われていますか?
主にファイルの完全性検証、重複排除、キャッシュキーなど、セキュリティ関連ではない用途です。パスワード、署名、証明書には、もはや推奨されません。
MD5ハッシュを逆算して元のテキストを得ることはできますか?
いいえ。MD5は一方向関数であり、ハッシュから入力を逆算する計算方法はありません。ただし攻撃者は、ありそうな入力を推測してそれぞれをハッシュ化し、一致するか確認できます。そのためMD5はパスワードには安全ではありません。
パスワードの保存にMD5が安全でないのはなぜですか?
計算が非常に高速なため、最新のハードウェアを使う攻撃者は毎秒膨大な数のパスワード候補を試せます。bcrypt、scrypt、Argon2などの専用アルゴリズムは、これに対抗するため意図的に低速に設計されています。
MD5ハッシュの長さはどれくらいですか?
入力テキストの長さにかかわらず、常に128ビットで、32個の十六進文字として表示されます。
異なる2つの入力から同じMD5ハッシュが生成されることはありますか?
はい。これは衝突と呼ばれ、2004年以降、研究者によってそのような組を構成する実用的な方法が示されています。これがMD5がもはや安全とみなされない主な理由です。
このツールは入力したテキストをサーバーに送信しますか?
いいえ。ハッシュはブラウザー内で実行されるJavaScriptによって計算され、入力が端末から外部に送信されることはありません。
MD5とSHA-256の違いは何ですか?
どちらもハッシュ関数ですが、SHA-256はより長い256ビットのハッシュを生成し、実用的な衝突攻撃は知られていません。一方、MD5の衝突耐性は破られています。セキュリティが重要な場合は、SHA-256の方が適しています。
参考文献
- Rivest, R. (1992). "The MD5 Message-Digest Algorithm." RFC 1321, Internet Engineering Task Force. https://tools.ietf.org/html/rfc1321
- Turner, S., Chen, L. (2011). "Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms." RFC 6151, Internet Engineering Task Force. https://tools.ietf.org/html/rfc6151
- Wang, X., Yu, H. (2005). 「MD5とその他のハッシュ関数を破る方法」Advances in Cryptology - EUROCRYPT 2005.
- Sotirov, A., et al. (2008). 「MD5は現在、有害とみなされる:不正なCA証明書の作成」25回Chaos Communication Congressで発表。
- National Institute of Standards and Technology (2015). "SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions." FIPS 202. https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf