MD5 と SHA、SHA-256 の違いは何ですか?
MD5 は 128 ビット(16 バイト)、SHA-1 は 160 ビット、SHA-256 は 256 ビットのハッシュを生成します。ビット数が大きいほど、理論上は衝突への耐性が高くなります。MD5 と SHA-1 はいずれも破られており、セキュリティ用途には使えません。SHA-256 は現在も主流の安全なハッシュで、計算には当サイトの SHA256 ハッシュ計算をお使いいただけます。
画像・PDF・圧縮ファイル・インストーラー、どんなファイルでも、サイズ制限なし
md5sum の「ハッシュ + 空白 + ファイル名」という行をそのまま貼り付けられます(ハッシュ部分だけを自動で取り出します)。16 桁の短縮形も認識します。厳密には違います。暗号化は可逆的で、鍵があれば元のデータを復元できます。MD5 は任意の長さの入力を固定長 128 ビットの要約へ圧縮する一方向ハッシュ関数であり、その過程で情報が失われるため、そもそも「元に戻す」という操作が存在しません。慣用的に「MD5 暗号化」と呼ばれるためこのページでもその言い方を使っていますが、実際に行っているのは MD5 値の計算です。
ついでに、よく混同されるものを区別しておきます。Base64 は暗号化でもハッシュでもなくエンコードであり、完全に可逆で誰でも元に戻せます。テキストしか通せない経路にバイナリデータを流すためのものです。これでパスワードを「暗号化」しているとしたら、それは暗号化方式ではなくセキュリティ上の問題です。
できません。「MD5 復号」を謳うサイトが行っているのは、いずれもレインボーテーブルによる逆引きです。よくあるパスワード(123456、admin、英単語、電話番号の並びなど)の MD5 をあらかじめ大量に計算してデータベースに保存しておき、入力されたハッシュが登録済みかどうかを照合しているだけです。見つかるのは元の文字列がありふれたものだったからで、見つからなければそれ以上できることはありません。
そこから実用的な結論が出ます。ランダムで長いパスフレーズや、ソルトを加えたパスワードは、どんな「復号サイト」でも見つかりません。逆に、あなたのパスワードがそうしたサイトで即座に引けてしまうなら、それはもともと公開された辞書に載っていたということですから、すぐに変えるべきです。代わりにランダムパスワード生成で作った長いものを使ってください。ネットワークを一切通らないので、何が生成されたかを知っているのはあなただけです。
今でも有効なのは完全性の検証:ダウンロードしたファイルの MD5 を計算し、配布元が示す値と比べれば、転送中に壊れていないか確認できます。上の「照合」欄はまさにこのためのもので、相手の値を貼り付けるだけです。16 進数の文字列を目で見比べる必要はありません。キャッシュキーや重複判定の識別子といった、セキュリティに関わらない用途にもよく使われます。
一方で、セキュリティ用途にはもう使うべきではありません。MD5 の衝突攻撃はとうに実用化されており、MD5 が同じで内容の異なるファイルを作るのは普通のパソコンで数秒です。したがって改ざん検知や電子署名の土台にはなりません。ユーザーのパスワードを保存する場合は、bcrypt・scrypt・Argon2 といった専用の低速ハッシュを使ってください。ソルトが組み込まれており、計算コストも調整できます。
32 桁が完全な MD5 値(128 ビットを 16 進数で表記したもの)で、他者の値と照合する場合はこちらを使います。16 桁は 32 桁の中央部分を切り出す慣習的な書き方で、別のアルゴリズムではなく単なる部分文字列です。桁数が減れば衝突の確率は上がるため、長さに制限がある表示用途にのみ向いています。
MD5 は 128 ビット(16 バイト)、SHA-1 は 160 ビット、SHA-256 は 256 ビットのハッシュを生成します。ビット数が大きいほど、理論上は衝突への耐性が高くなります。MD5 と SHA-1 はいずれも破られており、セキュリティ用途には使えません。SHA-256 は現在も主流の安全なハッシュで、計算には当サイトの SHA256 ハッシュ計算をお使いいただけます。
できません。MD5 は一方向ハッシュ関数であり、設計上そもそも不可逆です。いわゆる「MD5 復号」サイトはレインボーテーブルの逆引きで、登録済みのありふれた文字列にしか通用せず、長いランダムなパスフレーズやソルト付きのパスワードは見つかりません。詳しくは上の「MD5 の『暗号化』と復号について」をご覧ください。
画像を上のアップロード欄にドロップして「MD5 を計算」を押すだけです。JPG・PNG・GIF・WebP・HEIC どれも同じで、MD5 が計算するのはファイルのバイト列であって中身が何かは関係ないため、形式ごとの設定は要りません。バイト列を計算するからこそ、見た目がまったく同じ 2 枚の画像でも MD5 は別物になり得ます。保存し直す、圧縮品質を変える、あるいは WeChat や QQ で転送されただけ(再エンコードと圧縮が入ります)でバイト列が変わり、MD5 も変わります。2 枚が同一ファイルかを確かめるには MD5 の比較が正確ですが、「見た目が同じか」を判断することはできません。
画像と同じで、ドロップするだけです。サイズ制限はありません。本ページはファイルを 4 MB ずつに切ってハッシュに渡すので、メモリ上には常に 1 片だけ。数 GB の PDF・ISO・インストーラーでも計算できます。進捗はボタンに表示されます。大きいファイルは数秒から数十秒かかるので、その間はページを閉じないでください。
バイト列が同じであれば、どのパソコンでどのツールを使っても MD5 値は必ず一致します。相手の値と一致しないということは、その 2 つのファイルが違うということです。よくある原因は、ダウンロードが完了していない、ファイルではなく Web ページを保存してしまった、配布元がファイルを差し替えたのに照合値を更新していない、のいずれかです。
ファイルをアップロード欄にドロップし、「照合」欄に配布元の MD5 値を貼り付けて計算を押します。一致すれば緑、不一致なら赤で表示されます。この欄には md5sum の「ハッシュ + 空白 + ファイル名」という行をそのまま貼り付けられますし、 md5: という接頭辞や 16 桁の短縮形も認識するので、手で整える必要はありません。貼り付けた値の長さが MD5 と合わない場合(たとえば 64 文字)、それはおそらく SHA-256 だと明示し、SHA-256 ハッシュ計算のページへ案内します。
いいえ。計算はすべてブラウザー内のローカル JavaScript で行われ、ファイルはどのサーバーにも送信されず、キャッシュもされません。そもそも受け取れるバックエンドが本サイトにはありません。これは大きいファイルほど実際的です —— 3 GB のインストーラーを計算するのに、まず 3 GB を送る必要はありません。ネットワークを切っても本ページは動きますので、試してみてください。
32 桁の MD5 が完全なハッシュ値(128 ビットを十六進数で表したもの)です。16 桁はその中央 16 文字(9 文字目から 24 文字目まで)にすぎません。独立したアルゴリズムではなく、32 桁の一部分です。