ハッシュ化と暗号化の違い|SHA-256が推奨される理由
セキュリティ プログラミング 基礎知識
結論
「元に戻せるのが暗号化」、「絶対に元に戻せないのがハッシュ化」。個人情報は暗号化、パスワードはハッシュ化して保存するのが鉄則です。
比較表
| 項目 | ハッシュ化 / 暗号化 |
|---|---|
| 可逆性 | 不可逆(元に戻せない) / 可逆(戻せる) |
| 主な用途 | パスワード保存, データの改ざん検知 / メッセージの秘匿, 通信の保護 |
| アルゴリズム例 | SHA-256, Argon2, bcrypt / AES, RSA |
🛡️ この場でハッシュ値を生成する
※ 入力時に自動で計算されます
SHA-256
SHA-384
SHA-512
なぜパスワードはハッシュ化するのか
もしデータベースが流出した際、パスワードが「暗号化」されて保存されていると、攻撃者が「鍵」も一緒に盗み出した場合にすべてのパスワードが復元されてしまいます。一方、「ハッシュ化」されていれば、管理者ですら元のパスワードを知ることができないため、流出時の被害を最小限に抑えられます。
SHA-256の現在
SHA-256は計算速度が非常に速いため、改ざん検知(ファイルの同一性チェック)には最適ですが、パスワード保存には「速すぎる」ことが弱点になる場合があります(攻撃者が高速に総当たりできてしまうため)。
そのため、現代のパスワード保存には bcrypt や Argon2 といった、意図的に計算負荷を高くしたアルゴリズムが推奨されています。ハッシュ化する際は、必ず「ソルト(Salt)」を加えて、レインボーテーブル攻撃(計算済みハッシュ一覧による逆引き)を防ぎましょう。
関連記事
あわせて読むと理解が深まる関連記事をまとめました。
| トピック | 記事 |
|---|---|
| ハッシュ生成 - SHA-256/384/512をローカルで安全に計算 | ハッシュ生成 - SHA-256/384/512をローカルで安全に計算 |
| Content Security Policy (CSP) 設定ガイド | Content Security Policy (CSP) 設定ガイド|XSS・クリックジャッキング対策 |
| HTTP/2とHTTP/3の違い | HTTP/2とHTTP/3の違い|QUICがWeb表示速度を変える理由 |
| JS Minify と難読化の違い | JS Minify と難読化の違い|本番 JS 最適化 |
| 1フレームは何秒・何ms? 60fpsと120fpsの計算方法 | 1フレームは何秒・何ms? 60fpsと120fpsの計算方法 |
| AIクローラー対応 robots.txt・llms.txt 設定ガイド 2026 | AIクローラー対応 robots.txt・llms.txt 設定ガイド 2026|GPTBot・ClaudeBot・Google-Extended・GEO戦略 |
| APIキャッシュ設計ガイド | APIキャッシュ設計ガイド|ETag・Cache-Control・304・CDNキャッシュキーの実務 |
| Web APIのエラーハンドリング設計 | Web APIのエラーハンドリング設計|RFC 9457・error_code・400/422/409の使い分け |
| Web APIのべき等性(Idempotency)設計 | Web APIのべき等性(Idempotency)設計|二重決済を防ぐ実装ガイド |
| API設計におけるページネーションの使い分け:オフセット型とカーソル型の比較 | API設計におけるページネーションの使い分け:オフセット型とカーソル型の比較 |
| APIのレート制限(Rate Limiting)実装ガイド | APIのレート制限(Rate Limiting)実装ガイド|アルゴリズム選定と429エラーの適切なハンドリング |
| APIデバッグで使うツールの使い分け | APIデバッグで使うツールの使い分け|JSON整形・JWT・Base64のワークフロー |