MD5・SHA-1・SHA-256の違いと正しい使い分け
公開: 2026-06-16
「とりあえずMD5を使っておけばいい」「SHA-1ならまだ大丈夫」——どちらも今では誤りです。本記事では、4種類のハッシュ関数の違いを出力長・速度・衝突耐性で整理し、用途別の正しい選び方を解説します。
アルゴリズム比較表
| アルゴリズム | 出力長 | 速度 | 衝突攻撃 | 推奨 |
|---|---|---|---|---|
| MD5 | 128bit / 32文字 | 最速 | 成立済 | 非推奨 |
| SHA-1 | 160bit / 40文字 | 速い | 成立済 | 非推奨 |
| SHA-256 | 256bit / 64文字 | 中 | 未成立 | 推奨 |
| SHA-512 | 512bit / 128文字 | 中(64bit機で高速) | 未成立 | 推奨 |
MD5:1991年生まれの古参・改ざん検出には使わない
MD5(Message-Digest Algorithm 5)はRSA社のRivest教授が1991年に設計したハッシュ関数で、出力長は128ビット(16進32文字)。速度が速いため当時はライセンス契約書のハッシュやファイル整合性チェックに広く使われました。
しかし2004年には任意の2文書で同じMD5を持つペアを作る『衝突攻撃』が実証され、2008年には偽造SSL証明書の作成までデモされました。「内容が違うのに同じMD5になるファイル」を意図的に作れる、ということです。改ざん検出の基本要件「内容が違えばハッシュも違う」が成立しないため、セキュリティ用途では2026年現在も使用すべきではありません。
ただし、配布元が古いMD5チェックサムしか公開していない場合の「配布元と同じ値かどうかの単純照合」用途であれば使えます。攻撃者が配布元と同じMD5の別ファイルを用意していなければ、ダウンロード途中の破損検出としては機能します。
SHA-1:2017年に衝突実証・新規採用しない
SHA-1はNSAが設計しNISTが1995年に標準化したハッシュ関数で、出力長は160ビット(16進40文字)。MD5より長く、しばらくは「MD5の後継」として広く使われていました。
2017年、GoogleとオランダのCWIによる『SHAttered』攻撃で、内容が異なる2つのPDFが同じSHA-1ハッシュを持つペアを実際に作成・公開しました。これにより主要ブラウザはSHA-1署名のSSL証明書を順次拒否するようになり、現在は新規システムでSHA-1を採用する理由はありません。
SHA-256:2026年の事実上の標準
SHA-256はSHA-2ファミリの一員で、出力長は256ビット(16進64文字)。NIST FIPS PUB 180-4で標準化され、2026年現在も衝突攻撃は実証されていません。Bitcoinなどの公開ブロックチェーン、SSL/TLS証明書、Linuxパッケージ署名、Gitのオブジェクト識別子(v2系)など、ありとあらゆる場面で標準的に使われています。
ファイル整合性チェックの相手と特に指定がなければ、SHA-256を選んでおけばまず外しません。本サイトの ハッシュ値生成ツール でもSHA-256を最も目立つ位置に配置しています。
SHA-512:64bit環境では実は速い
SHA-512は出力長512ビット(16進128文字)の同じSHA-2ファミリ。直感的には「より重そう」ですが、内部演算が64bit単位で設計されているため、64bit CPUではSHA-256より高速になることが多いです。
配布元がSHA-512を公表している場合や、長期保存用のハッシュ(例: 法的証拠保全)として「より長いハッシュ値を残したい」場合に向きます。日常のチェックサム照合用途であれば、互換性の広いSHA-256で十分です。
用途別の選び方(早見)
- ダウンロードファイルの整合性チェック:配布元と同じものを使う。指定がなければSHA-256。
- 新規システムでの改ざん検出設計:SHA-256以上(SHA-256かSHA-512)。MD5/SHA-1は採用しない。
- 電子署名・SSL/TLS証明書:SHA-256以上。MD5/SHA-1は標準から除外されています。
- パスワード保存:いずれのSHAでもダメ。bcrypt/scrypt/Argon2を使う(理由は別記事へ)。
- 長期保存の証拠ハッシュ:SHA-256かSHA-512。法定証拠としての利用が想定される場合は専門家に相談。
補足
- ・本記事は2026-06-16時点のNIST FIPS 180-4およびIETF RFC 6234に基づく一般的な解説です。重要システム設計では公開されている最新ガイダンスをご確認ください。
- ・SHA-3 ファミリ(Keccak)も標準化されていますが、2026年時点の流通量はSHA-2ファミリのほうが圧倒的に多いため、本記事ではSHA-256/SHA-512を中心に紹介しています。
実際にハッシュ値を計算してみる
MD5・SHA-1・SHA-256・SHA-512の4種を同時に計算して見比べられます:ハッシュ値生成ツール