【はっしゅち】

ハッシュ値 とは?

最終更新:
💡 データの「デジタル指紋」、改ざんを検知するための固定長の文字列
📌 このページのポイント
ハッシュ値:入力→固定長の値に変換 "Hello" "Hello!" 大量のテキスト... ハッシュ 関数 (SHA-256等) 2cf24dba5f... e7d31fc0b0... 9f86d081b5... ↑ 同じ長さ ↑ 1文字違うだけで全く異なる 一方向性 固定長出力 衝突耐性
ハッシュ値のイメージ
ひよこ ひよこ
ハッシュ値って具体的にどう見えるの?
ペンギン先生 ペンギン先生
例えばSHA-256で「hello」をハッシュすると「2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824」という64文字の16進数文字列になる。元の文字数に関係なく常に同じ長さ。
ひよこ ひよこ
ファイルのダウンロードで確認することある?
ペンギン先生 ペンギン先生
OSのISOファイルなど大きなファイルをダウンロードするとき、公式サイトにSHA-256のハッシュ値が書いてある。ダウンロード後に自分でハッシュ値を計算して一致すれば「改ざんなし・ダウンロード成功」が確認できる。
ひよこ ひよこ
パスワードをハッシュ値で保管するのはなぜ?
ペンギン先生 ペンギン先生
DBが漏洩してもパスワードそのものが流出しないようにするため。ログイン時は入力されたパスワードをハッシュ化してDB内のハッシュ値と比較する。ハッシュ値から元のパスワードは計算できないから安全。ソルト(ランダム値)も組み合わせるとさらに安全になる。
ひよこ ひよこ
MD5はもう使っちゃダメって聞いたけど本当?
ペンギン先生 ペンギン先生
セキュリティ用途では本当にダメ。MD5は衝突攻撃が実用的に可能で、異なるファイルから同じハッシュ値を生成できてしまう。パスワードの保管やデジタル署名には絶対使わないこと。ファイルの簡易的な同一性チェック(破損検知)くらいなら許容されることもあるけど、新規開発ではSHA-256以上を使おう。
ひよこ ひよこ
ブロックチェーンもハッシュ値を使ってるの?
ペンギン先生 ペンギン先生
ブロックチェーンの根幹技術だよ。各ブロックに前のブロックのハッシュ値が含まれていて、1つのブロックを改ざんすると後続の全ブロックのハッシュ値が変わるから不正が即座にバレる。ビットコインのマイニングも「特定の条件を満たすハッシュ値を見つける」計算競争なんだ。ハッシュ値の「一方通行」「衝突困難」という性質がブロックチェーン信頼性を支えているよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
ハッシュ値って出てきたら「ハッシュ関数が出力するデータの指紋、改ざん検知やパスワード保管に使う」と思えばOK!
📖 おまけ:英語の意味
「Hash Value」 = ハッシュ値・ハッシュ化された値
💬 「message digest(メッセージダイジェスト)」とも呼ばれる。digestは「要約」の意味で、大きなデータを固定サイズに要約したもの
← 用語集にもどる