IT用語
任意のデータから決まった長さの値(ハッシュ値)を計算する関数。元のデータに戻せないため、改ざんの検知やパスワードの保存に使う。
ハッシュ関数は、任意の長さのデータから、決まった長さの値(ハッシュ値)を計算する関数です。同じデータからは必ず同じハッシュ値ができ、データが少しでも違えばまったく違う値になります。
特徴
- ハッシュ値から元のデータを計算で求めることは、現実的にはできない(一方向性)
- 違うデータから同じハッシュ値ができること(衝突)が起きにくい
主な使われ方
- 改ざんの検知:ダウンロードしたファイルのハッシュ値を、配布元が公開している値と比べる
- パスワードの保存:パスワードそのものではなくハッシュ値を保存し、ログイン時に入力のハッシュ値と比べる
- デジタル署名や、IOC でのファイルの識別
パスワードの保存で気を付けること
パスワードの保存には、SHA-256 のような汎用のハッシュ関数をそのまま使うのではなく、計算に時間がかかるよう作られた専用の方式(bcrypt・Argon2 など)を使い、ソルト(利用者ごとのランダムな値)を加えます。PHP では password_hash() を使います。MD5 や SHA-1 は弱点が知られているため、安全性が必要な用途には使いません。