AI活用の教科書

ハッシュ化

Hashingはっしゅか

ひとことで言うと

データを決まった手順で別の文字列に変換し、元には戻せなくする技術です。

📖 もうちょい詳しく

何が新しいの?

ハッシュ化は、文字や数字のかたまり(データ)を、決まった計算の手順にかけて、まったく別の文字列に変えるしくみです。特徴は、一度変換すると元のデータには戻せないことです。たとえばパスワードをそのまま保存すると、もし漏れたときに危険ですが、ハッシュ化しておけば中身が読めません。そのため、安全を守るための土台としてよく使われています。

どうやって動いてるの?

ハッシュ化には「ハッシュ関数」という、入力を受け取って固定の長さの文字列を返す計算式を使います。入力が1文字でも変わると、出てくる文字列はがらりと変わります。逆に、同じ入力からはいつも同じ結果が出ます。この性質を使い、保存しておいたハッシュ値(変換後の文字列)と、新しく入力された値のハッシュ値を見くらべて、一致するかどうかを確かめます。

何ができるの?

いちばん身近なのはパスワードの保管です。サービス側はあなたのパスワードそのものを持たず、ハッシュ値だけを保存します。ほかにも、ダウンロードしたファイルが途中で壊れていないか、書きかえられていないかを確かめる用途にも使われます。元の文字数が長くても短くても、同じ長さの文字列になるので、照合がしやすいのも利点です。

🌱 身近なたとえ

紙を細かく切るシュレッダーで例えると、書類をかけると細かい紙片になりますが、その紙片からもとの文章を組み立て直すことはできません。それでも「同じ書類をかければ、毎回まったく同じ切れかたになる」と決まっていれば、切ったあとの状態どうしを見くらべて、一致していれば「これは同じ書類だ」と判断できます。ハッシュ化も、元に戻せないけれど照合には使える、という点が似ています。

✅ まず覚えるポイント

  • ハッシュ化は、データを別の文字列に変える「一方向」の変換です
  • 一度変換すると、基本的には元のデータには戻せません
  • 同じ入力からは、いつも同じ結果(ハッシュ値)が出ます
  • 入力が少し違うだけで、結果は大きく変わります
  • パスワード保管やデータの改ざんチェックに使われます

🧭 よくある勘違い

ハッシュ化と暗号化は同じもの?

似ていますが目的がちがいます。暗号化は「あとで元に戻して読む」ことを前提にした変換で、正しいかぎ(鍵)があれば復元できます。ハッシュ化は元に戻せないことが前提です。中身を読み返す必要があるならば暗号化、照合だけできればよいならばハッシュ化、と使い分けることが多いです。

ハッシュ値が同じなら絶対に同じデータ?

ほとんどの場合は同じデータと考えてよいですが、ごくまれに、別の入力から同じハッシュ値が出てしまうことがあります。これを「衝突」と呼びます。安全性の高いハッシュ関数では、この衝突が起きにくいように設計されています。

ハッシュ化すれば漏れても安心?

万全ではありません。よく使われるパスワードは、あらかじめハッシュ値を計算しておく手口で破られることがあります。そのため実際には「ソルト」と呼ばれる追加の文字を混ぜるなど、さらに守りを固めるのが一般的です。

🧩 関連して覚えると楽な言葉

  • encryption(暗号化): あとで元に戻して読むことを前提にした変換のしくみ
  • authentication(認証): 利用者が本人かどうかを確かめる手続き。ハッシュ化がよく使われる
  • jwt(JWT): 改ざんを見つけるためにハッシュの技術を使うトークンの形式
  • ssl-tls(SSL/TLS): 通信を守るしくみ。内部でハッシュの技術も使われている

🏁 ひとことでまとめ

ハッシュ化は、データを戻せない形に変えてしまうことで、中身を見せずに「同じかどうか」だけを確かめられるようにする技術です。