MD5 vs SHA-256の比較

MD5とSHA-256ハッシュアルゴリズムを並べて比較。出力長、セキュリティ、パフォーマンス、プロジェクトでの使い分けについて解説します。

General

詳細な説明

MD5とSHA-256はどちらも暗号学的ハッシュ関数ですが、出力サイズ、セキュリティ、適切な用途が大きく異なります。

出力長:

MD5は128ビットダイジェスト(32文字の16進数)を生成し、SHA-256は256ビットダイジェスト(64文字の16進数)を生成します。SHA-256の出力空間は2^256で、MD5の2^128と比べて圧倒的に大きく、衝突耐性に直結します。

セキュリティ比較:

MD5は暗号学的に破られています。2004年以降、実用的な衝突攻撃が存在し、現在ではノートPCで数秒でMD5衝突を生成できます。一方、SHA-256にはセキュリティ特性に対する既知の実用的攻撃はありません。SHA-256の衝突発見には約2^128回の操作が必要であり、予見可能な将来において計算不可能です。

パフォーマンス:

MD5はSHA-256より30〜60%高速です。ただし、SHA-NI(SHA拡張)命令を搭載したCPUではSHA-256がハードウェアアクセラレーションされ、この差は大幅に縮小します。IntelのSHA-NI搭載プロセッサでは、SHA-256がMD5のスループットに匹敵するか上回ることもあります。

移行の考慮事項:

MD5をセキュリティ目的で使用しているシステムを保守している場合、SHA-256に移行すべきです。ファイルチェックサムの場合は移行期間中にSHA-256ダイジェストをMD5と並行して保存できます。データベースレコードのフィンガープリントの場合は、32文字から64文字への文字列長の増加を計画してください。

選択の指針:

セキュリティが重要なアプリケーション(デジタル署名、改ざん防止の整合性検証、証明書ピンニング、ブロックチェーン)にはSHA-256を使用してください。MD5はセキュリティが不要で速度が重要な場合(キャッシュキー、データ重複排除、偶発的なファイル破損の検出)にのみ使用してください。

ユースケース

この比較は、高速な非セキュリティチェックサムにはMD5、暗号学的セキュリティが必要なアプリケーションにはSHA-256を選択する際の判断に役立ちます。

Try It — Hash Generator

フルツールを開く