コンテンツにスキップ
ToolsMinify logo
すべての記事

SHA-256 と MD5 - どちらのハッシュを使用する必要がありますか? (2026年)

SHA-256 と MD5 では、ダイジェストの長さ、速度、耐衝突性、実際のセキュリティを直接比較しました。 MD5 が壊れる理由、MD5 がまだ問題ない場合、SHA-256 に到達する時期、およびパスワードに bcrypt または Argon2 の代わりになぜ必要なのかを学びましょう。

更新日 2026年7月19日7 分で読めます

ハッシュジェネレーターを使用 - 無料

ライブツールを開き、このガイドで学んだことを適用してください。

ハッシュジェネレーターを開く

MD5 と SHA-256 は最も広く使用されている 2 つのハッシュ関数であり、ファイルのチェックサム、ダウンロードの検証、データの整合性チェック、および (誤って) パスワードの保存など、同じ場所で使用されます。しかし、それらは交換可能ではありません。 MD5 は古くて高速ですが、20 年前から暗号が壊れていると考えられてきました。一方、SHA-256 は、TLS 証明書、デジタル署名、ブロックチェーンによって信頼されている最新のデフォルトです。このガイドでは、長さ、速度、セキュリティに関して SHA-256 と MD5 を比較し、MD5 が失敗する理由を正確に説明し、それぞれが依然として適切な箇所を示します。

クイック回答

完全性検証、デジタル署名、実際に依存するチェックサムなど、セキュリティ関連のあらゆる用途に SHA-256 を使用します。 MD5 は実際の衝突攻撃によって破壊されるため、偶発的な破損に対する簡単なチェックなど、セキュリティ以外のタスクにのみ使用する必要があります。また、パスワードの保存にはどちらも単独で使用しないでください。bcrypt、scrypt、Argon2 などの低速でソルト化されたアルゴリズムを使用してください。

ハッシュ関数とは何ですか?

暗号化ハッシュ関数は、単語、ファイル、ギガバイトのデータなど、あらゆる入力を受け取り、ハッシュ、ダイジェスト、またはフィンガープリントと呼ばれる固定長の文字列を生成します。同じ入力からは常に同じ出力が生成されますが、プロセスは一方向にのみ実行されます。ハッシュを取得して逆方向に作業して元のデータを復元することはできません。 MD5 と SHA-256 はどちらもこの種のハッシュ関数です。違いは、その出力がどれだけ大きいか、そしてどれだけ攻撃が難しいかです。

優れた暗号ハッシュには 3 つのプロパティがあることが期待されており、それらを理解することが、MD5 が失敗するのに SHA-256 が失敗する理由を理解する鍵となります。

  • 決定的かつ固定長: 同じ入力からは常に同じダイジェストが生成され、入力の長さに関係なくすべてのダイジェストは同じサイズになります。
  • プリイメージ耐性: ハッシュが与えられると、それを生成する入力を見つけることが不可能であるため、それを元に戻すことはできません。
  • 衝突耐性: 同じハッシュを生成する 2 つの異なる入力を見つけることは不可能です。これはまさに MD5 が失った特性です。

ハッシュは雪崩効果も示します。単一の文字を変更すると、末尾のスペースも追加され、出力ビットのおよそ半分が反転し、まったく異なるダイジェストが生成されます。これが、ハッシュがデータが変更されたかどうかを検出するのに役立つ理由です。

MD5: 高速だが壊れている

MD5 (Message-Digest Algorithm 5) は、1991 年に Ron Rivest によって設計されました。MD5 は、32 個の 16 進文字で書かれた 128 ビットのダイジェストを生成します。たとえば、3 文字の文字列 abc の MD5 は 900150983cd24fb0d6963f7d28e17f72 です。 MD5 は高速であり、かつてはチェックサム、パスワード ハッシュ、およびデジタル証明書のためにほぼどこでも使用されていました。

なぜMD5は壊れているのか

MD5 の致命的な問題は衝突です。 2004 年に研究者らは、同じ MD5 ハッシュを使用して 2 つの異なる入力を生成する実用的な方法を実証し、それ以来、攻撃はより高速かつ低コストになっています。現在、通常のコンピュータでは数秒で衝突が発生する可能性があります。衝突耐性はほとんどのセキュリティ用途に依存する特性であるため、MD5 は暗号的に壊れていると見なされます。

これは単なる理論上の話ではありません。 2012 年に、Flame マルウェアは MD5 衝突を利用して Microsoft コード署名証明書を偽造し、正規の Windows アップデートを装わせました。また、選択されたプレフィックスの衝突により、同じ MD5 を共有する 2 つのファイル (無害なドキュメントと悪意のあるドキュメント) が作成される可能性があるため、MD5 チェックサムではファイルが本物であることを証明できなくなります。

MD5がまだ大丈夫なところ

MD5 は役に立たないわけではありません。単にセキュリティ ツールではないだけです。偶発的なファイル破損を検出するための高速チェックサム、ハッシュ テーブルやキャッシュ キー、意図的に衝突を強制しようとする人がいないファイルの重複排除など、敵対的ではないタスクにはまだ問題ありません。セキュリティまたは信頼が関係する瞬間に、SHA-256 に切り替えます。

SHA-256: 最新のデフォルト

SHA-256 は、2001 年に NIST によって公開された SHA-2 ファミリの一部です。これは、64 個の 16 進文字として書かれた 256 ビットのダイジェストを生成します。 abc の SHA-256 は ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad です。上記の MD5 ダイジェストのちょうど 2 倍の長さであることに注目してください。 SHA-256 には実用的な衝突攻撃は知られておらず、TLS/HTTPS 証明書、ソフトウェア署名、Git オブジェクト識別子、およびビットコイン ブロックチェーンの背後で主力となっています。

MD5 と SHA-256 の間のアルゴリズムである SHA-1 について言及する価値があります。 SHA-1 は 160 ビットのダイジェストを生成しますが、実際の衝突 (2017 年の SHattered 攻撃) によっても破られたため、これも非推奨になります。安全なハッシュが必要な場合、SHA-256 が安全で十分にサポートされているデフォルトです。 SHA-384 および SHA-512 は、追加のマージンが必要な場合にさらに大きなダイジェストを提供します。

SHA-256 と MD5: 並べて比較

最も重要な要素に関して 2 つのアルゴリズムをどのように比較するかは次のとおりです。

  • ダイジェスト長 - MD5 は 128 ビット (32 の 16 進文字)。 SHA-256 は 256 ビット (64 個の 16 進文字) です。
  • 導入年 - 1991 年の MD5。 SHA-256 (SHA-2 ファミリ)、2001 年。
  • 速度 - MD5 は計算が高速です。 SHA-256 は若干遅いですが、ほぼすべての用途に十分な速度です。
  • 衝突耐性 - MD5 は壊れています (2004 年以降の実際の衝突)。 SHA-256 には実際の衝突は知られていません。
  • セキュリティ ステータス - MD5 はすべてのセキュリティ用途において非推奨です。 SHA-256 が推奨されており、広く信頼されています。
  • 現在の一般的な用途 - MD5: レガシー チェックサム、キャッシュ キー、非セキュリティ重複除去。 SHA-256: 完全性検証、デジタル署名、証明書、ブロックチェーン。

要点: MD5 は素の速度でのみ勝っており、その速度の利点はほとんど重要ではありません。信頼に関わるあらゆる側面において、SHA-256 が優れています。

それぞれをいつ使用するか

次の場合は SHA-256 (またはそれより強力な) を使用してください。

  • ダウンロードしたファイルが発行者のチェックサムと一致することを確認します。
  • デジタル署名と証明書を作成または確認します。
  • 正確さが重要な場合は、Git コミット、重複排除キー、キャッシュなどのコンテンツ アドレス指定の識別子を生成します。
  • 誰かが意図的に一致するハッシュを偽装しようとする可能性のある状況。

MD5 は次の場合にのみ受け入れられます。

  • 信頼できる内部データが偶発的に破損していないかを簡単にチェックする必要があります。
  • セキュリティ以外のハッシュ テーブル キーまたはキャッシュ キーを構築しています。
  • MD5 のみを理解する従来のシステムと相互運用する必要があり、セキュリティは要求されません。

パスワードにも SHA-256 を使用しないでください

よくある間違いは、パスワード ストレージを MD5 から SHA-256 にアップグレードし、問題が解決したと思い込むことです。そうではない。 SHA-256 は高速になるように設計されており、その速度はまさにパスワードに望ましくないものです。これにより、データベースを盗む攻撃者は 1 秒あたり数十億回の推測を試みることができます。高速な汎用ハッシュは、資格情報としては間違ったツールです。

パスワードには、意図的に低速でソルト化された専用のパスワード ハッシュ アルゴリズムを使用します。

  • Argon2 - 最新の推奨事項であり、パスワード ハッシュ コンペティションの優勝者です。メモリは GPU 攻撃に抵抗しにくいです。
  • bcrypt - 十分にテストされており、調整可能な作業係数を備えて広く利用可能です。
  • scrypt - Argon2 のようなメモリハードで、確実な代替手段。

これらはそれぞれ、パスワードごとに一意のランダムなソルトを追加し、時間の経過とともに作業係数を高めることができます。そのため、MD5 や SHA-256 ではなく、ユーザー資格情報を保存するための正しい選択となります。

よくある質問

MD5は安全ですか?

いいえ、MD5 は、デジタル署名、証明書、ファイルが改ざんされていないことの確認など、衝突耐性に依存する目的では安全ではありません。実際の衝突攻撃は 2004 年から存在しており、現在では実行するのは簡単です。 MD5 は、偶発的で悪意のない破損に対する高速チェックサムとしてのみ受け入れられます。

SHA-256 は MD5 よりも優れていますか?

はい、セキュリティのためです。 SHA-256 は、より長い 256 ビットのダイジェストを生成し、実用的な衝突攻撃が知られていないため、整合性の検証、署名、証明書には正しい選択です。 MD5 の唯一の利点はわずかに高速であることですが、それが壊れたセキュリティを上回ることはほとんどありません。

MD5 または SHA-256 を復号化または元に戻すことはできますか?

いいえ、ハッシュは一方向であるため、復号化するものは何もありません。ハッシュから元の入力を計算することはできません。代わりに攻撃者が行うのは、レインボー テーブルやブルート フォースを使用して、入力を推測し、一致するまでハッシュすることです。そのため、MD5 やソルトなしの SHA-256 などの高速ハッシュがパスワードにとって危険です。

SHA-256 は MD5 よりもはるかに遅いですか?

SHA-256 は MD5 よりも遅いですが、ファイル、文字列、API ペイロードのハッシュなどの一般的なワークロードの場合、最新のハードウェアではその差は無視できる程度です。セキュリティの向上はわずかなパフォーマンス コストをはるかに上回るため、速度が MD5 を選択する理由になることはほとんどありません。

パスワードには MD5 または SHA-256 を使用する必要がありますか?

どちらも単独ではありません。どちらも高速な汎用ハッシュであるため、オフラインでの推測が容易になります。代わりに、Argon2、bcrypt、または scrypt などの低速のソルト付きパスワード ハッシュ関数を使用してください。

MD5 に代わるものは何ですか?

チェックサムと整合性を確保するために、MD5 を SHA-256 (または SHA-512) に置き換えてください。パスワード ストレージの場合は、Argon2、bcrypt、または scrypt に置き換えます。 SHA-1 も実際の衝突攻撃によって破壊されているため、代替として SHA-1 を使用することは避けてください。

SHA-256 ハッシュを即座に生成します

無料の ハッシュ ジェネレーター を使用して、ブラウザー内の任意のテキストから SHA-256、SHA-1、SHA-384、または SHA-512 ダイジェストを作成します。何もアップロードされません。ブラウザの Web Crypto API には、より安全な選択に向けて役立つ MD5 が含まれていません。

ハッシュジェネレーターを使用 - 無料

ライブツールを開き、このガイドで学んだことを適用してください。

ハッシュジェネレーターを開く

関連記事