手軽屋
ツール一覧

MD5・SHA-1・SHA-256の違いと正しい使い分け

公開: 2026-06-16

「とりあえずMD5を使っておけばいい」「SHA-1ならまだ大丈夫」——どちらも今では誤りです。本記事では、4種類のハッシュ関数の違いを出力長・速度・衝突耐性で整理し、用途別の正しい選び方を解説します。

アルゴリズム比較表

アルゴリズム出力長速度衝突攻撃推奨
MD5128bit / 32文字最速成立済非推奨
SHA-1160bit / 40文字速い成立済非推奨
SHA-256256bit / 64文字未成立推奨
SHA-512512bit / 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で十分です。

用途別の選び方(早見)

補足

実際にハッシュ値を計算してみる

MD5・SHA-1・SHA-256・SHA-512の4種を同時に計算して見比べられます:ハッシュ値生成ツール