TL

ハッシュ化と暗号化の違い

ハッシュ化は元に戻せない一方向変換(検証用)、暗号化は鍵で戻せる可逆変換(秘匿用)です。目的が違い、混同が事故を招きます。

基礎ハッシュ暗号化セキュリティ暗号最終更新: 2026-06-06
TL;DR要点だけ先に
  • 1.ハッシュ化は不可逆(元に戻せない)。改ざん検知やパスワード照合など「一致を確かめる」用途に使います。
  • 2.暗号化は可逆(鍵で元に戻せる)。中身を隠して、後で正規の相手が取り出す「秘匿」用途に使います。
  • 3.パスワードは暗号化ではなくハッシュ化で保存し、さらにソルトと低速アルゴリズム(bcrypt/Argon2)を併用するのが正解です。

一番の違い:戻せるか、戻せないか

「ハッシュ化」と「暗号化」はどちらもデータを変換する操作なので混同されがちですが、目的は正反対と言ってよいほど違います。決定的な差は、**元のデータに戻せるかどうか(可逆性)**です。

  • ハッシュ化(hashing)=一方向(不可逆):入力を固定長の値に変換しますが、そこから元の入力を逆算できません。「戻せない」ことそのものが目的です。
  • 暗号化(encryption)=双方向(可逆):鍵を使ってデータを隠し、正規の鍵があれば元通りに復号できます。「後で取り出す」ことが前提です。

言い換えると、ハッシュ化は「一致するかを確かめたい」ときに、暗号化は「中身を隠して、後で読みたい」ときに使います。この目的の違いを取り違えると、後述するような典型的な事故につながります。

ハッシュ化:一致を確かめる道具

ハッシュ関数は、どんな長さの入力でも固定長の値(ハッシュ値)に変換します。同じ入力なら必ず同じ出力になり、入力が少し違うだけで出力は大きく変わります。そして出力から入力を逆算するのは事実上不可能です。

hash("password123") = ef92b778ba...(固定長・元には戻せない)
hash("password124") = a1d0c6e83f...(1文字違うだけで全く別の値)

この性質が活きるのは「元の値を知らなくても、一致だけ確認できる」場面です。

  • 改ざん検知:ファイルのハッシュ値を比べれば、中身が1ビットでも変わったか分かります(配布ファイルのチェックサム等)。
  • パスワード照合:保存したハッシュと、入力をハッシュした値を比べるだけで認証できます。元のパスワードを保存・復元する必要がありません
  • 重複検出・インデックス:内容が同じかを高速に判定できます。

暗号化:隠して、後で取り出す道具

暗号化は、データを鍵を使って読めない形(暗号文)に変換し、正規の鍵で**元に戻せる(復号できる)**ようにします。目的は秘匿、つまり「第三者には読ませず、正規の相手だけが読める」状態を作ることです。

encrypt("カード番号", 鍵) = 9f3a...(暗号文)
decrypt(9f3a..., 鍵)      = "カード番号"(鍵があれば元に戻る)

鍵の使い方で2方式に分かれます。共通鍵暗号は暗号化と復号に同じ鍵を使い高速、公開鍵暗号は別々の鍵を使い鍵配送を安全にできます(その分低速)。実務では両者を組み合わせます。詳しくは暗号の基礎を参照してください。

暗号化が向くのは「後で必ず元のデータが必要になる」場面です。たとえば、通信路の保護(TLS)、保存データの暗号化、メッセージの秘匿などです。逆に「元の値を二度と取り出す必要がない」なら、暗号化は過剰どころか危険な選択になり得ます。

表で整理する

両者の違いを一覧にすると、用途の選び分けが明確になります。

観点ハッシュ化暗号化
可逆性不可逆(戻せない)可逆(鍵で戻せる)
不要必要
目的一致の検証・改ざん検知秘匿(隠して後で読む)
出力固定長入力長に依存
代表例SHA-256、bcrypt、Argon2AES、RSA
向く用途パスワード保存、整合性確認通信・保存データの保護
「暗号化したから安全」は誤り

暗号化が守るのは機密性(読まれないこと)だけです。鍵が一緒に漏れれば暗号文は平文同然になりますし、暗号化しても改ざんに気づけるとは限りません。一方ハッシュ化は秘匿の道具ではないため、「ハッシュにしたから中身は隠せた」も誤解です(後述)。それぞれが守る対象は異なります。

よくある誤解を正す

ここが本記事で最も重要な部分です。混同から生まれる典型的な誤りを正しておきます。

誤解1:パスワードは暗号化して保存すればよい 不正解です。暗号化は復号できるため、鍵が漏れれば全パスワードが平文に戻ります。そもそも認証は「保存ハッシュと入力ハッシュの一致」で成立し、元のパスワードを取り出す場面は存在しません。だから戻せないハッシュ化が正解です。

誤解2:ハッシュにすれば値は「隠せる」 不正解です。ハッシュは秘匿の道具ではありません。元の候補が限られる値(電話番号やよくあるパスワード)は、片っ端からハッシュ化して突合すれば逆引きできます。「隠したい」なら暗号化を使うべき領域です。

誤解3:SHA-256 を1回かければパスワードは安全 不十分です。SHA-256 は高速すぎて総当たりに弱く、ソルトが無ければレインボーテーブルで逆引きされます。

パスワードはハッシュ+ソルト+低速化

パスワード保存の正解は、(1) ハッシュ化(暗号化ではない)、(2) ユーザーごとに異なるソルトを付与、(3) bcrypt や Argon2 など「わざと遅い」専用アルゴリズムを使う、の3点セットです。これで事前計算と総当たりの両方を封じられます。具体的な実装の勘所はパスワードの安全な保存で詳しく扱っています。

まとめ

ハッシュ化と暗号化は、似て非なる道具です。ハッシュ化は不可逆で「一致の検証」、暗号化は可逆で「秘匿」——この目的の違いがすべての出発点になります。

選び分けの指針はシンプルで、「後で元のデータが必要か?」を問えば足ります。必要なら暗号化、不要(一致だけ分かればよい)ならハッシュ化です。パスワードは後者の代表例で、ハッシュ+ソルト+低速アルゴリズムが定石です。土台となる暗号技術の全体像は暗号の基礎、保存設計の詳細はパスワードの安全な保存で深掘りできます。

セキュリティ Article

ハッシュ化と暗号化の違いを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

ハッシュ

比較で見る軸

難易度: basic / カテゴリ: セキュリティ / タグ数: 4

導入後に効く点

暗号化は可逆(鍵で元に戻せる)。中身を隠して、後で正規の相手が取り出す「秘匿」用途に使います。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
basic
カテゴリ
セキュリティ
タグ数
4

判断チェックリスト

  • 自社の用途が「ハッシュ / 暗号化」に近いか確認する。
  • 強みである「ハッシュ化は不可逆(元に戻せない)。改ざん検知やパスワード照合など「一致を確かめる」用途に使います。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

ハッシュ暗号化セキュリティ暗号ハッシュ暗号化セキュリティ暗号
参考: 公式情報