MD5 ハッシュ値
無料オンラインMD5ハッシュ計算ツール。テキスト、ファイル、一括行ごと、HMAC-MD5の4つのモードに対応。UTF-8/Latin1エンコーディング選択可能、大文字出力と8桁ごとのスペース区切りに対応。⚠️ MD5は安全ではありません。パスワード保存には使用しないでください。
関連おすすめ
MD5とは何ですか?
MD5(Message-Digest Algorithm 5)はRonald Rivestによって1991年に設計された128ビットハッシュ関数です(RFC 1321)。任意の長さの入力を固定32文字の16進数フィンガープリントに変換します。MD5はかつてデジタル署名、証明書検証、パスワード保存に広く使用されていましたが、2004年に王小雲チームが初めて衝突攻撃を実演し、2008年にFlameマルウェアがMD5衝突を利用してCA証明書を偽造し、2024年には原像攻撃が実演される新しい研究が発表されました。
**MD5のセキュリティ状態**:NISTは2011年にSP 800-131Aでデジタル署名とセキュリティシーンでのMD5使用を正式に廃止しました。ただしMD5は非セキュリティシーンではまだ有用です:ファイル整合性検証(ダウンロードの破損確認)、データ重複除去、キャッシュキー、ログ分析。判断基準:攻撃者が衝突を作成する動機と能力があるか?なければ、MD5の速度の速さはむしろ利点です。
**MD5がパスワード保存に使用されるべきでない理由**:MD5は計算が非常に速く、現代のGPUは毎秒数十億回計算でき、レインボーテーブルと組み合わせると一般的なパスワードを秒単位で破解できます。パスワード保存にはbcrypt、scrypt、Argon2などの「低速ハッシュ」アルゴリズムを使用しなければなりません——これらのアルゴリズムには設定可能なワークファクターがあり、ブルートフォースのコストを非常に高くします。
**HMAC-MD5のセキュリティ**:純粋なMD5は破解されていますが、HMAC-MD5(鍵ベースのハッシュメッセージ認証コード)は鍵が未知の場合でも安全です。HMACの構成方法がハッシュ関数の衝突耐性に直接依存しないからです。ただし新しいシステムではHMAC-SHA256への移行が推奨されます。
このツールは純粋なJavaScriptでMD5計算を実装しています(Web Crypto APIはMD5をサポートしていません)。すべての計算はブラウザローカルで完了し、ファイルは分割インクリメンタル読み込みを採用しサーバーにアップロードされません。開発者ツールのネットワークパネルを開くと、外部へのリクエストがゼロであることを確認できます。
ユースケース
- ファイル整合性検証:ソフトウェアをダウンロードした後にMD5を計算し、公式サイトが提供するフィンガープリントと比較してファイルが破損していないことを確認
- 一括ダイジェスト生成:複数の設定テキストのMD5ダイジェストを一度に生成し、高速な対応表やリリース記録に使用
- HMAC-MD5署名:レガシーシステムとの連携時に鍵とダイジェスト結果を検証(互換性シーンのみ)
- データ重複分析:MD5を使用してログやデータ内の重複エントリを高速に判定
- キャッシュキー生成:MD5を短い一意識別子として使用し、キャッシュやインデックスシステムに利用
- 学習研究:ハッシュアルゴリズムの原理を理解し、MD5/SHA1/SHA256の出力の違いを比較
使い方
- モードを選択:テキスト(文字列入力)、ファイル(ドラッグ&ドロップアップロード)、一括行ごと(各行独立計算)、HMAC-MD5
- パラメータを設定:文字エンコーディング(UTF-8/Latin1)、大文字出力、8桁ごとのスペース区切りを選択
- コンテンツを入力:テキストを入力、ファイルをアップロード、または一括コンテンツを貼り付け
- 結果を確認:ハッシュ結果をコピーして検証、リリースノート、スクリプトに使用
特徴
- 4つの計算モード:テキスト、ファイル、一括行ごと、HMAC-MD5に対応し、一般的な検証シーンをカバー
- UTF-8/Latin1エンコーディング選択可能:文字エンコーディングを切り替えて異なるシステムのハッシュ入力に一致
- 大文字出力と8桁グループ:MD5結果を大文字形式に切り替え可能、8桁ごとにスペースを挿入して読みやすく
- ファイル分割ハッシュ:大きなファイルはインクリメンタル読み込みで計算し、メモリオーバーフローを回避、インターフェースは常にスムーズ
- 一括行ごと対応:各行のテキストを独立して計算し、「原文 → ハッシュ値」対応表を出力
- ワンクリックで結果コピー:ハッシュ値をクリップボードに直接コピー可能
コード例
MD5/Hashing in JavaScript (Web Crypto supports SHA, MD5 needs library)
// Note: Web Crypto API does NOT support MD5 (deprecated)
// Use SHA-256 instead for new projects
async function sha256(message) {
const msgBuffer = new TextEncoder().encode(message);
const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
return Array.from(new Uint8Array(hashBuffer)).map(b => b.toString(16).padStart(2,'0')).join('');
}
sha256('Hello World').then(console.log);
// MD5 in Node.js using crypto module
const crypto = require('crypto');
const md5 = crypto.createHash('md5').update('Hello World').digest('hex');
console.log(md5); // b10a8db164e0754105b7a99be72e3fe5MD5 Hashing in Python
import hashlib
text = 'Hello World'
md5_hash = hashlib.md5(text.encode('utf-8')).hexdigest()
print(md5_hash) # b10a8db164e0754105b7a99be72e3fe5
# File MD5 (chunked for large files)
def md5_file(filepath, chunk_size=8192):
md5 = hashlib.md5()
with open(filepath, 'rb') as f:
while chunk := f.read(chunk_size):
md5.update(chunk)
return md5.hexdigest()
# HMAC-MD5
import hmac
hmac_md5 = hmac.new(b'secret-key', b'Hello World', hashlib.md5).hexdigest()
print(hmac_md5)MD5 Hashing in Java
import java.security.MessageDigest;
import java.nio.charset.StandardCharsets;
public class MD5Example {
public static String md5(String input) throws Exception {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] hash = md.digest(input.getBytes(StandardCharsets.UTF_8));
StringBuilder sb = new StringBuilder();
for (byte b : hash) sb.append(String.format("%02x", b));
return sb.toString();
}
public static void main(String[] args) throws Exception {
System.out.println(md5("Hello World"));
// b10a8db164e0754105b7a99be72e3fe5
}
}
// Note: Use SHA-256 for new code: MessageDigest.getInstance("SHA-256")よくある質問
MD5はどのような場面でよく使われますか?
MD5はファイル整合性検証(ダウンロードパッケージの検証など)、高速ダイジェスト生成、レガシーシステム互換、キャッシュキー、データ重複除去などの非セキュリティシーンでよく使われます。MD5は128ビット(32文字の16進数)を出力し、計算速度が速いため、安全性要件の低い検証シーンに適しています。
MD5とSHA256の違いは何ですか?
MD5は128ビット(32文字Hex)を出力し、SHA256は256ビット(64文字Hex)を出力します。MD5はより高速ですが破解されています;SHA256は実用的な衝突攻撃が発見されておらず、現代のセキュリティシーンで第一選択肢となっています。
SHA256ツールMD5がパスワード保存に適さないのはなぜですか?
MD5は計算速度が非常に速く、現代のGPUは毎秒数十億回計算でき、ソルトがないとレインボーテーブルで簡単に破解されます。パスワード保存にはbcrypt、scrypt、Argon2などの低速ハッシュアルゴリズムを使用すべきです。
パスワード生成器MD5は破解されましたが、まだ使えますか?
セキュリティシーン(デジタル署名、パスワード保存、TLS証明書)では絶対に使用できません。ただし非セキュリティシーン(破損防止のファイル検証、データ重複除去、キャッシュキー)ではMD5はまだ使用可能です。攻撃者が衝突を作成する動機がないからです。
MD5ハッシュ値は復号できますか?
MD5は一方向ハッシュであり、理論上復号できません。しかしレインボーテーブルとブルートフォースにより、一般的な弱いパスワードは秒単位で見つかります。これがMD5でパスワードを保存してはいけない理由です。
大きなファイルのハッシュは重くなりますか?
いいえ。ツールは分割インクリメンタル読み込みを採用しており、ファイル全体をメモリに読み込まないため、数GBのファイルでもスムーズに計算でき、インターフェースは常に応答します。
HMAC-MD5とは何ですか?通常のMD5との違いは?
HMAC-MD5はMD5ベースのメッセージ認証コードアルゴリズムで、鍵を入力として必要とし、メッセージの整合性と真正性を検証するために使用されます。MD5自体に衝突問題があっても、鍵が未知の場合HMAC-MD5は安全です(ただしHMAC-SHA256への移行が推奨されます)。
HMAC生成器用語集
- ハッシュ関数(Hash Function)
- 任意の長さの入力を固定長の出力にマッピングする数学的関数。優れたハッシュ関数は一方向性(出力から入力を逆算できない)、衝突耐性(異なる2つの入力が同じ出力を生成することを見つけにくい)、雪崩効果(入力のわずかな変化が出力を完全に異なるものにする)を備えています。
- 衝突攻撃(Collision Attack)
- 同じハッシュ出力を生成する2つの異なる入力を見つけること。MD5の衝突攻撃は2004年に王小雲チームによって実現され、数秒で衝突ペアを生成でき、デジタル署名が偽造可能になりました。
- 原像攻撃(Preimage Attack)
- ハッシュ出力が与えられたとき、その出力を生成する入力を見つけること。衝突攻撃より難しいですが、MD5の原像耐性は2024年の新しい研究によって大幅に弱められました。
- レインボーテーブル(Rainbow Table)
- 事前に計算されたハッシュ値→原文のマッピングテーブルで、弱いパスワードハッシュを高速に破解するために使用されます。ソルト(salt)を使用するとレインボーテーブル攻撃を防御できます。
- HMAC(Hash-based Message Authentication Code)
- ハッシュ関数ベースのメッセージ認証コードで、鍵を使用してメッセージを認証し、データの改ざんを防止します。HMAC-MD5とHMAC-SHA256が一般的なバリアントです。HMAC生成器
- bcrypt
- パスワード保存専用に設計された低速ハッシュアルゴリズム。組み込みのソルトと調整可能なワークファクター(cost factor)を備え、ブルートフォースのコストを非常に高くします。パスワード保存に推奨されるアルゴリズムの1つです。
- チェックサム(Checksum)
- データ整合性を検証するための小型の固定値。MD5、SHA-1、SHA-256はチェックサムとしてよく使用され、ハッシュ値を比較してファイルが転送中に破損していないかを判断します。
- 雪崩効果(Avalanche Effect)
- 入力のわずかな変化(1ビットの変更でも)が出力ハッシュ値の劇的で予測不可能な変化を引き起こすこと。MD5には衝突攻撃が存在しますが、雪崩効果は依然として良好であり、非セキュリティ検証シーンでMD5がまだ使用可能な理由です。
- RFC 1321
- MD5アルゴリズムの公式標準ドキュメント。Ronald Rivestによって1992年にIETFに提出され、MD5のアルゴリズム手順とテストケースが詳細に記述されています。
- 分割ハッシュ(Chunked Hashing)
- 大きなファイルを処理する際、ファイル全体を一度にメモリに読み込まず、チャンク単位で読み込み、ハッシュ状態をインクリメンタルに更新する方法。このツールは大きなファイルに分割ハッシュ技術を採用し、メモリオーバーフローとインターフェースのフリーズを回避します。
主なハッシュアルゴリズム比較
| アルゴリズム | 出力ビット数 | Hex長 | 安全性 | 速度 | 推奨用途 |
|---|---|---|---|---|---|
MD5 | 128ビット | 32文字 | ❌ 破解済み(衝突/原像) | 非常に速い | ファイル検証、重複除去、キャッシュキー |
SHA-1 | 160ビット | 40文字 | ❌ 衝突攻撃(2017) | 速い | Git、旧システム互換 |
SHA-256 | 256ビット | 64文字 | ✅ 安全 | 中程度 | デジタル署名、証明書、ブロックチェーン |
SHA-512 | 512ビット | 128文字 | ✅ 安全 | 速い(64ビットCPU) | 高セキュリティシーン、パスワード派生 |
bcrypt | - | 60文字 | ✅ パスワード専用 | 遅い(調整可能) | パスワード保存 |
MD5 セキュリティイベントタイムライン
| 年 | イベント | 影響 |
|---|---|---|
1991 | Ron RivestがMD5を設計(RFC 1321) | MD4に代わり、主流ハッシュアルゴリズムとなる |
1996 | MD5の擬似衝突の欠陥が初めて発見される | 学界でMD5の安全性に疑問が生まれる |
2004 | 王小雲チームがMD5衝突攻撃を実演 | MD5デジタル署名の安全性が完全に崩れる |
2008 | FlameマルウェアがMD5衝突を利用してCA証明書を偽造 | NISTがデジタル署名でのMD5使用を正式に廃止 |
2011 | NIST SP 800-131AがMD5のセキュリティ用途を正式に禁止 | 米国政府システムがMD5を全面的に使用停止 |
2024 | 新しい原像攻撃論文が発表 | MD5最後の防衛線(原像耐性)が突破される |
Authoritative References
- ReferenceRFC 1321 - MD5メッセージダイジェストアルゴリズム
- ReferenceNIST SP 800-131A - 暗号アルゴリズム移行に関する推奨事項
- ReferenceWikipedia - MD5
- ReferenceMD5衝突攻撃(Wang他、2004)
- 安全文字列比較
- 二進数変換
- シーザー暗号
- モールス信号
- 16進数変換
- 動画→Base64変換
- Base64 を動画に変換
- 画像をBase64に変換
- Base64を画像に変換
- テキスト→Base64変換
- Base64→テキスト変換
- ファイルハッシュ検証
- File to Base64
- Base64→ファイル変換
- 音声→Base64
- Base64を音声に変換
- AES暗号化・復号化
- DES暗号化/復号
- Base32 エンコーダー デコーダー
- Base58 エンコードとデコード
- Base64 エンコード
- Base64 デコード
- Base64比較
- Base64 分割
- Base64複数行マージ
- Base64フォーマット
- Base64形式チェック
- Base64一括エンコード
- Base64一括デコード
- Base64クリーナー
- Base64 パディング処理
- Base64長さ統計
- Base64→16進数変換
- Base64 DataURL 変換
- Base64-Hex双方向変換
- Base85エンコーダー/デコーダー
- HMAC生成と検証
- PBKDF2鍵導出
- MD5 ハッシュ値
- SHA-256 ハッシュ
- SHA1 ハッシュ
- SHA512ハッシュ
- JWT デコーダー
- HTMLエンティティエンコード/デコード
- Unicodeエスケープ
- URL エンコード
- URL Safe Base64変換
- MIME Base64
- Java難読化
- JS難読化
- PHP難読化
- Python難読化