# ハッシュ — データの指紋（改ざん検知）

> レベル: 初級 ／ 対象: 大人
> 出典: Kotowary — https://kotowary.com/learn/units/hash?level=beginner&audience=adult
暗号（戻せる）とは別に、**元に戻せない**変換が**ハッシュ**。データの「**指紋**」を作る技術です。

## これは何？

どんな長さのデータも、決まった長さの値（指紋）に変換します。

- **一方向** — データ → 指紋 は作れるが、指紋 → データ には**戻せない**
- **同じ入力は同じ指紋** — 照合に使える
- **少しでも違えば全く違う指紋** — 改ざんが一目で分かる

代表は **SHA-256** など。

::diagram{name="hash-fingerprint"}

## 何に使う？

- **改ざん検知** — 受け取ったデータの指紋を照合し、書き換えを見抜く
- **パスワード保管** — パスワードそのものでなく、指紋を保存（漏れても元が分かりにくい）
- **重複検出・整合性** — ファイルが同じかを指紋で比較

暗号化と違い「戻す」用途ではなく、「**同じか・変わっていないか**」を確かめる道具です。

## ⚠️ 気をつける

- **暗号化ではない** — 秘密にするためではない（戻せない）
- **パスワードはソルト付き** — そのままハッシュだと使い回し攻撃に弱い。個別のソルトを足す
- **古い方式** — MD5・SHA-1は弱い（衝突が見つかった）。SHA-2以降を使う
