MD5 オンライン計算

テキストを入力するかファイルを選ぶだけで MD5 値がすぐに得られます。16 桁・32 桁の出力と大文字/小文字の切り替えに対応。計算はすべてブラウザ内で行われ、データは一切アップロードされません。
テキスト入力
ファイルのアップロード
ここにファイルをドラッグ、またはクリックして選択

任意のファイル形式に対応、最大 2 MB

出力オプション
説明:
1. テキスト入力とファイルのアップロードはどちらか一方です。両方指定した場合はファイルが優先されます。
2. テキストが空欄のときは、現在のタイムスタンプが入力として使われます。
3. ファイルサイズの上限は 2 MB です。超えるとエラーになります。
4. MD5 は一方向ハッシュ関数(俗に「暗号化」と呼ばれます)です。復号はできず、セキュリティ用途に使うべきではありません。

MD5 の「暗号化」と復号について

MD5 は本当に「暗号化」なのですか?

厳密には違います。暗号化は可逆的で、鍵があれば元のデータを復元できます。MD5 は任意の長さの入力を固定長 128 ビットの要約へ圧縮する一方向ハッシュ関数であり、その過程で情報が失われるため、そもそも「元に戻す」という操作が存在しません。慣用的に「MD5 暗号化」と呼ばれるためこのページでもその言い方を使っていますが、実際に行っているのは MD5 値の計算です。

MD5 は復号できますか?

できません。「MD5 復号」を謳うサイトが行っているのは、いずれもレインボーテーブルによる逆引きです。よくあるパスワード(123456、admin、英単語、電話番号の並びなど)の MD5 をあらかじめ大量に計算してデータベースに保存しておき、入力されたハッシュが登録済みかどうかを照合しているだけです。見つかるのは元の文字列がありふれたものだったからで、見つからなければそれ以上できることはありません。

結論は実務的です。長いランダムなパスフレーズや、ソルトを付けてからハッシュ化したパスワードは、どの「復号サイト」でも見つかりません。逆に、そうしたサイトで即座に判明するパスワードは、もともと公開の辞書に載っているということなので、すぐに変更してください。

では MD5 は今でも何に使えますか?

今でも有効なのは完全性の検証です。ダウンロードしたファイルの MD5 を計算し、配布元が公開している値と比較すれば、転送中に壊れていないことを確認できます。キャッシュキーや重複排除の識別子など、セキュリティに関わらない用途にもよく使われます。

一方で、セキュリティ用途にはもう使うべきではありません。MD5 の衝突攻撃はとうに実用化されており、MD5 が同じで内容の異なるファイルを作るのは普通のパソコンで数秒です。したがって改ざん検知や電子署名の土台にはなりません。ユーザーのパスワードを保存する場合は、bcrypt・scrypt・Argon2 といった専用の低速ハッシュを使ってください。ソルトが組み込まれており、計算コストも調整できます。

16 桁と 32 桁はどちらを選べばよいですか?

32 桁が完全な MD5 値(128 ビットを 16 進数で表記したもの)で、他者の値と照合する場合はこちらを使います。16 桁は 32 桁の中央部分を切り出す慣習的な書き方で、別のアルゴリズムではなく単なる部分文字列です。桁数が減れば衝突の確率は上がるため、長さに制限がある表示用途にのみ向いています。

よくある質問

MD5 と SHA、SHA-256 の違いは何ですか?

MD5 は 128 ビット(16 バイト)、SHA-1 は 160 ビット、SHA-256 は 256 ビットのハッシュを生成します。ビット数が大きいほど、理論上は衝突耐性が高くなります。MD5 と SHA-1 はいずれも破られており、セキュリティ用途には適しません。現在も主流の安全なハッシュ関数は SHA-256 です。

MD5 は復号できますか?

できません。MD5 は一方向ハッシュ関数であり、設計上そもそも不可逆です。いわゆる「MD5 復号」サイトはレインボーテーブルの逆引きで、登録済みのありふれた文字列にしか通用せず、長いランダムなパスフレーズやソルト付きのパスワードは見つかりません。詳しくは上の「MD5 の『暗号化』と復号について」をご覧ください。

ファイルのアップロードに 2 MB の上限があるのはなぜですか?

大きなファイルをブラウザで処理するとメモリを大量に消費します。また MD5 は通常、小さなファイルや文字列の整合性チェックに使われるものです。大きなファイルには SHA-256 など、より新しいアルゴリズムでの分割計算をおすすめします。

16 桁と 32 桁の MD5 の違いは何ですか?

32 桁の MD5 が完全なハッシュ値(128 ビットを十六進数で表したもの)です。16 桁はその中央 16 文字(9 文字目から 24 文字目まで)にすぎません。独立したアルゴリズムではなく、32 桁の一部分です。