MD5 Hash Generator

任意のテキストからMD5ハッシュを生成

入力テキスト

ローカルで実行 · シークレットの貼り付けも安全

MD5ハッシュ

MD5ハッシュがここに表示されます…

MD5ハッシュとは?

MD5(Message-Digest Algorithm 5)は、入力のサイズに関わらず固定128ビット(16バイト)のダイジェストを生成する暗号ハッシュ関数です。1992年にRonald RivestによってRFC 1321として公開されたMD5は、MD4より高速な後継として設計され、インターネット上で最も広く使用されるハッシュ関数のひとつとなりました。このアルゴリズムは入力を512ビットブロック単位で処理し、各ラウンドで異なる非線形関数を使用する4ラウンド×16オペレーションを経て、32文字の16進数フィンガープリントを生成します。

ハッシュ関数は一方向変換です。入力からハッシュは即座に計算できますが、ハッシュのみから元の入力を復元することはできません。入力の1ビットの変更でも全く異なるダイジェストが生成されます — これをアバランチ効果と呼びます。MD5は無限の入力空間を固定128ビットの出力空間にマッピングするため、異なる2つの入力が同じハッシュを生成するコリジョンは数学的に必然ですが、安全なハッシュ関数ではそれを計算的に実行不可能にします。

2004年以降、研究者たちはMD5に対する実用的なコリジョン攻撃を実証しており、デジタル署名・証明書・コリジョン耐性が必要な用途ではMD5は安全とみなされません。しかしMD5は非セキュリティ目的では依然広く使用されています。ダウンロード後のファイル整合性検証、キャッシュキーの生成、コンテンツの重複排除、文字列からの決定論的識別子の作成などです。こうした用途では、アルゴリズムの速度とユビキタスなライブラリサポートが実用的な選択肢となります。 2008年、Marc Stevensらは選択プレフィックスコリジョン攻撃を発表しました。攻撃者が任意のプレフィックスを持つ2つのドキュメントを同じダイジェストで作成できることを意味します。この手法は2008年のChaos Communication Congressで不正な認証局証明書を構築することにより実証されました。2012年のFlameマルウェアはその後、選択プレフィックスコリジョンを悪用してMicrosoftのコード署名証明書を偽造し、マルウェアが正規のWindows Updateパッケージを装えるようにしました。これらの実際の攻撃により、ハッシュされる入力に攻撃者が影響を与えられる信頼アンカー用途にはアルゴリズムは暗号的に破られていることが確認されました。

このMD5ジェネレーターを使う理由

インストールやコード記述なしにMD5ハッシュを即座に生成できます。テキストを貼り付けるだけでリアルタイムに32文字の16進数ダイジェストが得られます。

即時ハッシュ計算
入力と同時に出力が更新されます。ボタンクリックも待機も不要 — 入力を変更するたびに文字単位でMD5ダイジェストが表示されます。
🔒
プライバシー優先の処理
すべてのハッシュ計算はJavaScriptを使用してブラウザ内でローカルに実行されます。入力テキストはデバイス外に出ることなく、いかなるサーバーにも送信されません。
📋
ワンクリックコピー
シングルクリックでハッシュをクリップボードにコピーできます。小文字と大文字の16進数出力を切り替えて、システムが要求するフォーマットに合わせられます。
🔍
アカウント不要
サインアップ・ログイン・使用制限は一切ありません。ページを開いて即座にハッシュ計算を開始できます。最新ブラウザを搭載した任意のデバイスで動作します。

MD5のユースケース

フロントエンド開発
静的アセットのキャッシュバスティングハッシュを生成します。CSSおよびJavaScriptのURLにファイルコンテンツのMD5ダイジェストを付加することで、コンテンツ変更時にブラウザが最新バージョンを取得するようになります。
バックエンドエンジニアリング
複雑なクエリパラメータやリクエストボディから決定論的なキャッシュキーを作成します。MD5ハッシュはRedis・Memcached・CDNキャッシュレイヤーで活用できるコンパクトな固定長キーを生成します。
DevOps & CI/CD
MD5チェックサムを比較することで転送後のファイル整合性を検証します。多くのパッケージレジストリやアーティファクトリポジトリは、簡易検証のためにダウンロードとともにMD5ダイジェストを公開しています。
QA & テスト
APIレスポンス・データベースダンプ・設定ファイルのMD5ハッシュを比較して、全コンテンツを差分比較せずにテスト実行間の予期しない変更を検出します。
データエンジニアリング
行コンテンツのMD5ハッシュを計算することでETLパイプライン内のレコードを重複排除します。同じハッシュを持つ2行は重複排除の候補となり、ストレージと処理コストを削減できます。
学習・教育
ハッシュ関数を試して一方向変換・アバランチ効果・セキュリティにおけるコリジョン耐性の重要性を理解しましょう。MD5は研究に最適な、最もシンプルかつ広く知られたハッシュです。

MD5と他のハッシュアルゴリズムの比較

MD5は一般的なハッシュアルゴリズムの中で最速かつ最短ですが、セキュリティ保証は最も弱くなります。以下の表では各アルゴリズムのダイジェストサイズ・標準・適切なユースケースを比較します。

アルゴリズムダイジェストサイズ16進数の長さ標準適した用途
MD5128 bits32 hex chars1992 / RFC 1321Checksums, non-security fingerprints
SHA-1160 bits40 hex chars1995 / RFC 3174Legacy git commits (being replaced)
SHA-256256 bits64 hex chars2001 / FIPS 180-4TLS certificates, blockchain, JWTs
SHA-384384 bits96 hex chars2001 / FIPS 180-4Government systems, higher security margin
SHA-512512 bits128 hex chars2001 / FIPS 180-4Digital signatures, HMAC with large keys
SHA-3256 bits64 hex chars2015 / FIPS 202Post-quantum readiness, backup standard
BLAKE3256 bits64 hex chars2020High-performance checksums, Merkle trees

MD5の仕組み

MD5はMerkle-Damgård構造を通じて入力を処理します。メッセージは512ビットの倍数にパディングされ、ブロックに分割され、各ブロックはあらかじめ計算されたサイン由来の定数と入力を混合する4ラウンド×16ビット演算を経て処理されます。結果は最終ダイジェストとなる128ビットの状態です。

各ラウンドは4つの32ビット状態ワード(A、B、C、D)のうち3つに異なる非線形補助関数を適用します。ラウンド1ではF(B,C,D) = (B AND C) OR (NOT B AND D) — ビット単位の条件選択器を使用します。ラウンド2ではG(B,C,D) = (B AND D) OR (C AND NOT D) — 補完選択器を使用します。ラウンド3ではH(B,C,D) = B XOR C XOR D — パリティ関数を使用します。ラウンド4ではI(B,C,D) = C XOR (B OR NOT D) — 非対称コンバイナーを使用します。これら4つの関数により入力のすべてのビットが出力ダイジェストに影響し、入力の小さな変化が結果のハッシュに大きく予測不可能な変化をもたらすアバランチ効果が生まれます。

Input: "hello world"
MD5: 5eb63bbbe01eeed093cb22bb8f5acdc3
(128 bits = 16 bytes = 32 hex characters)

アルゴリズムは5段階で進みます:(1) 1ビットを付加し、メッセージ長が448 mod 512になるまでゼロを追加する;(2) 元のメッセージ長を64ビットのリトルエンディアン整数として付加する;(3) 4つの32ビット状態変数(A、B、C、D)を固定定数で初期化する;(4) 各512ビットブロックを4つの非線形関数(F、G、H、I)を使用した64オペレーション(各ラウンド16オペレーション)で処理する;(5) 結果の状態を累積合計に加算し、最終的な128ビットハッシュをリトルエンディアンバイト順で出力する。

コード例

一般的なプログラミング言語や環境でMD5ハッシュを生成する方法。なお、MD5はブラウザのWeb Crypto APIでは利用できません — ライブラリまたはNode.jsを使用してください。

JavaScript (Web Crypto — browser & Node.js)
// MD5 is not available in Web Crypto API (it only supports SHA-*)
// Use a library like 'js-md5' or the Node.js crypto module

// Node.js (built-in crypto)
const crypto = require('crypto')
const hash = crypto.createHash('md5').update('hello world').digest('hex')
console.log(hash) // → "5eb63bbbe01eeed093cb22bb8f5acdc3"

// With Unicode input
crypto.createHash('md5').update('cafe\u0301').digest('hex')
// → "4fad076bae205e95bec9dacea498e2ab"
Python
import hashlib

# Basic MD5 hash
result = hashlib.md5(b'hello world').hexdigest()
print(result)  # → "5eb63bbbe01eeed093cb22bb8f5acdc3"

# Hash a string (must encode to bytes first)
text = 'hello world'
hashlib.md5(text.encode('utf-8')).hexdigest()
# → "5eb63bbbe01eeed093cb22bb8f5acdc3"

# Hash a file
with open('file.bin', 'rb') as f:
    md5 = hashlib.md5()
    for chunk in iter(lambda: f.read(8192), b''):
        md5.update(chunk)
    print(md5.hexdigest())
Go
package main

import (
    "crypto/md5"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := md5.Sum(data)
    fmt.Printf("%x\n", hash)
    // → 5eb63bbbe01eeed093cb22bb8f5acdc3
}
CLI (Linux / macOS)
# Using md5sum (Linux) or md5 (macOS)
echo -n "hello world" | md5sum
# → 5eb63bbbe01eeed093cb22bb8f5acdc3  -

# macOS
echo -n "hello world" | md5
# → 5eb63bbbe01eeed093cb22bb8f5acdc3

# Hash a file
md5sum package.json
# → a1b2c3d4e5f6...  package.json

# Using openssl (cross-platform)
echo -n "hello world" | openssl md5
# → MD5(stdin)= 5eb63bbbe01eeed093cb22bb8f5acdc3

よくある質問

MD5はまだ安全に使用できますか?
デジタル署名・TLS証明書・パスワードハッシュなどのセキュリティ重要な用途には安全ではありません。実用的なコリジョン攻撃は2004年から実証されており、選択プレフィックスコリジョン攻撃は現在、一般的なハードウェアで数秒以内に実行可能です。非セキュリティ用途 — チェックサム・キャッシュキー・コンテンツ重複排除 — にはアルゴリズムは実用的かつ広くサポートされた選択肢として残っています。
MD5とSHA-256の違いは何ですか?
MD5アルゴリズムは128ビット(32文字の16進数)のダイジェストを生成し、コリジョン攻撃に対して脆弱です。SHA-256は256ビット(64文字の16進数)のダイジェストを生成し、既知の実用的な攻撃はありません。SHA-256は同じハードウェア上で古いアルゴリズムより約30〜40%遅くなりますが、追加のセキュリティマージンにより、完全性検証が敵対的な改ざんに耐える必要があるアプリケーションのデフォルト選択肢となっています。
MD5ハッシュから元の入力を逆算できますか?
できません。このハッシュ関数は設計上一方向です — ハッシュ中に情報を破棄します。ただし、短い入力や一般的な入力に対しては、攻撃者がレインボーテーブル(ハッシュからプレーンテキストへの事前計算マッピング)やブルートフォースを使用して元の入力を見つけられる可能性があります。このためパスワード保存には絶対に使用しないでください。代わりにbcrypt・scrypt・Argon2を使用してください。
なぜ異なるツールが同じテキストで異なるMD5ハッシュを生成することがありますか?
最も一般的な原因はエンコーディングの違いです。このアルゴリズムは文字ではなくバイトで動作します。文字列「hello」はUTF-8・UTF-16・Latin-1でエンコードすると異なるハッシュを生成します。もう一つの頻繁な問題は末尾の改行です。ほとんどのシェルのechoは-nを使わない限り改行(\n)を付加します。ハッシュされる正確なバイトを常に確認してください。
MD5ハッシュの計算にどれくらい時間がかかりますか?
このアルゴリズムは非常に高速です。現代のハードウェアでは、単一CPUコアで毎秒3〜6GBのデータを処理します。GPUは毎秒数十億のチェックサムを計算できます。この速度はファイル検証には有利ですが、パスワードハッシュには不利です。パスワードには、ブルートフォース攻撃に耐えるために意図的に低速な(bcrypt・Argon2)アルゴリズムが好まれます。
MD5コリジョンとは何ですか?なぜ重要なのですか?
コリジョンは2つの異なる入力が同じハッシュダイジェストを生成したときに発生します。2004年、Xiaoyun WangがMD5に対する初の実用的なコリジョンを実証しました。2012年には、Flameマルウェアがコリジョンを悪用してMicrosoftのコード署名証明書を偽造しました。今日、同一プレフィックスのコリジョンは1分以内に計算できます。これによりデジタル署名や証明書ピンニングなどコリジョン耐性に依存するアプリケーションにはアルゴリズムは不適切となります。
ファイルチェックサムにMD5とCRC32のどちらを使うべきですか?
ファイル整合性検証にはCRC32よりこのチェックサムの方が優れた選択肢です。CRC32は転送中の偶発的な破損を検出するために設計された32ビットの誤り検出コードであり、意図的な改ざんには対応していません。小さな出力空間のためコリジョンを簡単に構築できます。MD5は128ビットダイジェストを提供しより強力な偶発的コリジョン耐性があります。信頼できないソースからのダウンロード検証などの敵対的シナリオには、代わりにSHA-256を使用してください。