ハッシュ化と暗号化の違い|SHA-256が推奨される理由

セキュリティ プログラミング 基礎知識
結論

「元に戻せるのが暗号化」「絶対に元に戻せないのがハッシュ化」。個人情報は暗号化、パスワードはハッシュ化して保存するのが鉄則です。

比較表

項目 ハッシュ化 / 暗号化
可逆性 不可逆(元に戻せない) / 可逆(戻せる)
主な用途 パスワード保存, データの改ざん検知 / メッセージの秘匿, 通信の保護
アルゴリズム例 SHA-256, Argon2, bcrypt / AES, RSA

🛡️ この場でハッシュ値を生成する

※ 入力時に自動で計算されます

SHA-256
SHA-384
SHA-512

なぜパスワードはハッシュ化するのか

もしデータベースが流出した際、パスワードが「暗号化」されて保存されていると、攻撃者が「鍵」も一緒に盗み出した場合にすべてのパスワードが復元されてしまいます。一方、「ハッシュ化」されていれば、管理者ですら元のパスワードを知ることができないため、流出時の被害を最小限に抑えられます。

SHA-256の現在

SHA-256は計算速度が非常に速いため、改ざん検知(ファイルの同一性チェック)には最適ですが、パスワード保存には「速すぎる」ことが弱点になる場合があります(攻撃者が高速に総当たりできてしまうため)。

そのため、現代のパスワード保存には bcryptArgon2 といった、意図的に計算負荷を高くしたアルゴリズムが推奨されています。ハッシュ化する際は、必ず「ソルト(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 設定ガイド 2026AIクローラー対応 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のワークフロー