ファイルハッシュアルゴリズム完全ガイド:MD5・SHA-1・SHA-256、どれを選ぶべきか?

2026年6月5日
約 14 分で読めます

ファイルをアップロード不要で使えるオンラインハッシュ計算ツールもご紹介

OSのインストールイメージをダウンロードしたとき、ページに e3b0c44298fc1c149afb... といった謎の文字列が載っているのを見たことはないでしょうか。「なんとなく検証に使うものらしい」とは分かっても、実際の確認方法や、MD5・SHA-1・SHA-256のどれを使えばいいのかは、意外と知られていません。

このガイドは、アルゴリズムの教科書的な解説を目的としていません。30秒で自分のユースケースに最適なハッシュアルゴリズムを選び、すぐに検証を始められるようにすること——それだけに絞っています。


1. ファイルハッシュとは?90秒で押さえる基本

ハッシュの本質:ファイルの「デジタル指紋」

契約書のファイルを例に考えてみましょう。ハッシュアルゴリズムは、超高精度の「指紋採取機」のようなものです。ファイルを入力すると、固定長の文字列が出力されます。これがファイルの「デジタル指紋」(ダイジェスト、メッセージダイジェストとも呼ばれます)です。

この指紋には、2つの重要な特性があります。

  • 変化への敏感さ:契約書にスペースを1つ追加しただけで、指紋はまったく別のものになります。
  • 一方向性:ファイルから指紋を計算することはできますが、指紋からファイルの内容を復元することは原理的に不可能です。

ハッシュの主な用途:3つのシーン

  • 📦 ダウンロードファイルの検証:転送中にファイルが改ざん・破損していないか確認する——最も一般的な使い方です。
  • 🗄️ 重複排除とキャッシュ:クラウドストレージが2つのファイルの同一性を判断し、無駄な二重保存を防ぐために利用されています。
  • 🔐 パスワードの保存(※重要な注意点:このユースケースには専用アルゴリズムが必要です。汎用ハッシュアルゴリズムは使用不可です。理由は後述します)。

よくある誤解:ハッシュ ≠ 暗号化

この2つを混同している方は少なくありません。しかし、本質的な違いがあります。

  • 暗号化は可逆:鍵でロックし、鍵で開錠できます。
  • ハッシュは不可逆:本を燃やして灰にするようなもの——灰の重さからおおよその情報は推測できても、灰から本の内容を復元することは絶対にできません。

この違いが、アルゴリズム選択のすべての判断基準の根拠になります。


2. 主要ハッシュアルゴリズム比較:安全性・速度・用途を一覧で確認

比較一覧表

アルゴリズム出力ビット数速度の目安セキュリティ状態推奨用途
MD5128ビット約339 MB/s⚠️ 非推奨(脆弱)セキュリティ不要な高速チェックのみ
SHA-1160ビット約368 MB/s❌ 使用禁止レガシーシステムとの互換性維持のみ
SHA-224224ビット中程度✅ 安全リソース制約のある組み込みデバイス
SHA-256256ビット約161 MB/s✅ 第一推奨ファイル検証・デジタル署名
SHA-384384ビットやや遅い✅ 高セキュリティ企業・組織の高セキュリティ要件
SHA-512512ビットやや遅い✅ 最高水準金融・コンプライアンス・証明書発行

💡 速度の目安について:上記の数値は一般的なハードウェア環境での参考値です。実際の速度はご利用の環境によって異なります。

MD5——速度は最速、ただし致命的な欠陥あり

MD5の衝突攻撃はすでに実用化されています。攻撃者はまったく異なる内容の2つのファイルで、同一のMD5値を生成することが可能です。つまり、悪意のあるファイルが正規ファイルになりすまして検証を通過できてしまいます。

ただし、使い道がないわけではありません。 セキュリティを問わない用途——たとえば大量のログファイルの高速重複排除など——では、MD5の速度優位性は依然として有効です。

原則:セキュリティ検証・パスワード保存・デジタル署名には絶対に使用しないこと。

SHA-1——MD5より長いが、同様に破られている

2017年、GoogleとCWI Amsterdamが共同で実施したSHAttered攻撃により、SHA-1の衝突が初めて実際に構築されました。これを受けて、主要ブラウザおよびCA認証局はSHA-1を全面的に廃止しています。

原則:新規プロジェクトでの使用は禁止。アップグレード不可能なレガシーシステムとの接続時にのみ、やむを得ず使用する。

SHA-256——現在のセキュリティ標準、「迷ったらこれ」

SHA-256は256ビットのハッシュ値を出力します。衝突を総当たりで見つけるには約2¹²⁸回の計算が必要——宇宙の熱的死を迎えるまでに完了することは不可能な計算量です。

その信頼性の裏付けも十分です。

  • ビットコインブロックチェーンのコアハッシュアルゴリズム
  • TLS/SSL証明書の標準署名アルゴリズム
  • 主要OS・ソフトウェアベンダーが採用するファイル検証の第一選択肢

速度面のコストは?MD5と比べて約2倍の処理時間がかかります。実感に換算すると、1GBのファイルでMD5が約3秒、SHA-256が約6秒。ほとんどのケースで、この3秒の差は問題になりません。

原則:SHA-256は現時点でのファイルハッシュ計算の「デフォルトの正解」です。

SHA-384 / SHA-512——「より高いセキュリティ」が必要なのはどんなとき?

金融コンプライアンス、政府・防衛レベルの要件、または長期保管(10年以上)が必要なシナリオでは、SHA-384とSHA-512がより大きなセキュリティマージンを提供します。

興味深い事実として、64ビットシステムではSHA-512の内部演算が64ビットアーキテクチャに最適化されているため、SHA-256と比べてもそれほど遅くないケースがあります。

補足:なぜパスワード保存には上記のどのアルゴリズムも使えないのか?

これは非常によくある誤解なので、必ず押さえておいてください。

汎用ハッシュアルゴリズムは速さを追求して設計されています。しかしパスワード保存では、それが逆効果になります——アルゴリズムが速いほど、攻撃者による総当たり攻撃も速くなるからです。

Bcrypt・PBKDF2・Argon2といったパスワード専用ハッシュアルゴリズムは、意図的に計算コストを高くすることで総当たり攻撃への耐性を持たせています。

本記事で紹介するすべてのアルゴリズムとツールは、ファイルの完全性検証を対象としています。パスワード保存には使用しないでください。


3. 用途別フローチャート:30秒で最適アルゴリズムを選ぶ

選択に迷わないための決定フロー

あなたの用途は?
├── ファイルの完全性検証・ダウンロード確認
│   ├── セキュリティが必要? → SHA-256 ✅
│   └── 高速な重複排除のみ(セキュリティ不要)? → MD5
├── パスワード・認証情報の保存 → ⛔ 対象外。Bcrypt / Argon2 を使用してください
├── デジタル署名・証明書 → SHA-256 または SHA-512
└── 高コンプライアンス要件(金融・政府機関) → SHA-384 / SHA-512

実際の開発シーン別:アルゴリズム選定の指針5選

  1. ユーザーがアップロードしたファイルをサーバー側で重複排除 → セキュリティ不要なら速度優先でMD5、セキュリティが必要ならSHA-256。
  2. CI/CDパイプラインでビルド成果物を検証 → SHA-256(セキュリティと効率のバランスが最適)。
  3. OSSリリース時にチェックサムを公開 → SHA-256またはSHA-512(コミュニティの標準的な慣行)。
  4. サードパーティからダウンロードしたファイルを検証 → 配布元が公開しているアルゴリズムに合わせて使用する。
  5. 大容量ファイル(1GB超)の転送後に完全性を確認 → SHA-256(数秒の追加コストでセキュリティを確保)。

4. 実践チュートリアル:ブラウザだけでファイルハッシュを計算する(ソフトウェアインストール不要)

「ローカル計算」が「アップロード計算」より重要な理由

多くのオンラインハッシュツールは、ファイルをサーバーにアップロードすることを求めます。しかし考えてみてください——検証したいのが取引契約書、ソースコード、医療記録といったファイルなら、アップロード自体がプライバシーの漏洩になりかねません。

本当に安全な方法は、ファイルをPCから外に出さず、すべての計算をブラウザ内で完結させることです。

これを支える技術が Web Crypto API——主要ブラウザがネイティブでサポートする暗号計算インターフェース(Chrome 41以降・Firefox 34以降・Safari 7以降対応)で、プラグインのインストールは一切不要です。

ステップバイステップの操作手順(sodatool.com を例に)

  1. ツールページにアクセスし、使用するハッシュアルゴリズムを選択します(複数選択可。MD5とSHA-256を同時に計算することもできます)。
  2. ファイルを選択またはドラッグ&ドロップして指定エリアに入れます。大容量ファイル(1GB超)にも対応しており、サーバーへのアップロードは一切行われません。
  3. 計算の進捗をリアルタイムで確認——大容量ファイルはプログレスバーが表示されるので、待ち時間も把握できます。
  4. 結果をワンクリックでコピーし、公式が公開しているハッシュ値と照合します。

大容量ファイルでもフリーズしない理由

一部のツールは大容量ファイルを処理する際にフリーズしたりクラッシュしたりします。原因は、ファイル全体を一度にメモリに読み込もうとする設計にあります。

適切な実装ではチャンク分割によるストリーミング処理を採用しています。ファイルを小さなブロックに分割して順次計算し、最後に結果を統合する方式です。これにより、数GBのファイルでもメモリ使用量を常に低水準に抑えられます。


5. よくある質問(FAQ)

Q1:ハッシュ値が同じなら、ファイルの内容も必ず同じですか?

理論上は「衝突」——異なるファイルが同じハッシュ値を持つ——が起こり得ます。ただしSHA-256の場合、その確率は実用上ゼロとみなせるレベルです。一方MD5は、衝突を人為的に作り出すことがすでに可能です。

Q2:MD5はまだ使えますか?

使えます。ただし用途次第です。

  • ✅ セキュリティ不要な高速重複排除・ログの整合性確認 → 使用可。
  • ❌ ファイルのセキュリティ検証・デジタル署名・パスワード保存 → 絶対に使用不可。

Q3:SHA-256はMD5よりどのくらい遅いですか?実用上の影響は?

参考値:MD5は約339 MB/s、SHA-256は約161 MB/s。1GBのファイルでMD5が約3秒、SHA-256が約6秒。日常的なファイル検証では、この差はほぼ気にならないレベルです。

Q4:オンラインツールとコマンドラインで計算結果が変わることはありますか?

ありません。 ハッシュアルゴリズムは決定論的です——同じファイルに同じアルゴリズムを適用すれば、世界中どのツールを使っても結果は完全に一致します。コマンドラインで相互検証することも可能です。

Q5:ファイルはサーバーにアップロードされますか?

Web Crypto APIを使ったローカル計算ツールでは、ファイルはブラウザの外に出ることは一切ありません。不安な場合は、ブラウザの開発者ツール(F12 → ネットワークタブ)を開いて、ファイルのアップロードリクエストが発生していないことをご自身で確認できます。


6. アルゴリズム選択の3つの鉄則

鉄則1:特別な理由がない限り、SHA-256を選ぶ

セキュリティ・パフォーマンス・互換性の三拍子が揃った最良のバランス点です。迷ったらSHA-256を選んでおけば間違いありません。

鉄則2:MD5とSHA-1はセキュリティ不要な用途に限定し、必ずその旨を明示する

チームメンバーがセキュリティ用途にMD5を使っているのを見かけたら、ぜひこの記事を共有してください。

鉄則3:パスワードの保存に汎用ハッシュアルゴリズムを使わない

Bcrypt・Argon2がパスワード保存の正解です。 汎用ハッシュアルゴリズムは「速すぎる」こと自体がセキュリティ上の脆弱性になります。

さっそく試してみましょう

理論だけ読んでも、実際に手を動かしてみないと実感は湧きません。sodatoolのファイルハッシュツールを開いて、手元の任意のファイルをドラッグ&ドロップしてみてください。30秒以内にそのファイルのデジタル指紋が取得できます——ファイルのアップロードなし、プライバシーの漏洩なし、結果は検証可能。