💻 ITパスポート | テクノロジ系 / セキュリティ

ハッシュ関数とは?

任意の長さのデータを、決まった長さの「指紋」に変換する一方向の変換関数。

🎬 こんなシーンを想像
ショッピングサイトのパスワードを「password123」と設定した。でも、このサービスのデータベースには「a3f8b…c92d」という暗号のような文字列しか保存されていない。
→ パスワードをハッシュ値に変換して保存=元に戻せない「指紋」!
🔑 ハッシュ変換の仕組み(1方向・不可逆) ハッシュ関数 (SHA-256 など) 「password123」(短い) 「1GBの動画ファイル」(巨大) 「password124」(1文字違い) a3f8b…c92d(256bit) 9e2f1…04ab(256bit) ff12c…8a71(256bit) ← ハッシュ値から元データに戻すことは「できない」
🛠️ ハッシュ関数の主な使いどころ
パスワード保管
パスワードはハッシュ値で保存。ハッキングされても元のパスワードが分からない。
改ざん検知
ファイルのハッシュ値を事前に記録。受け取ったファイルのハッシュと比較→違えば改ざんあり。
デジタル署名
文書全体ではなく「文書のハッシュ値」に署名する。処理が速く安全。
ブロックチェーン
前のブロックのハッシュ値を次のブロックに含める→チェーンが繋がり改ざん不可能に。
⚠️ ひっかけ注意ポイント
「暗号化」と混同しやすい
暗号化は復号(元に戻す)できる(鍵が必要)。ハッシュは一方向で元に戻せない。試験で「ハッシュ化したデータを復号する」という選択肢は誤り。
「衝突」という概念
理論上、異なる入力から同じハッシュ値が出ることを「衝突」という。MD5 などの古いアルゴリズムは衝突発見→現在は SHA-256 以上を推奨。
「完全に安全」は誤り
ハッシュ化されたパスワードも「レインボーテーブル攻撃」(よく使うパスワードのハッシュ一覧で照合)で解析されることがある。対策は「ソルト」を加えることで同じパスワードでも異なるハッシュ値になる。
🧠 覚え方(無理やりゴロ)
「ハッシュは一方通行のミンチ機」
牛肉(元データ)を入れたらミンチ(ハッシュ値)が出る。
ミンチから元の牛肉には戻らない=不可逆!


同じ肉を入れると必ず同じミンチ(再現性)
1gでも肉を変えるとまったく別のミンチ(雪崩効果)