ハッシュ関数とは、入力されたどのような長さのデータ(文字列やファイルなど)からでも、常に固定された長さの不規則な値(ハッシュ値)を計算して出力する数式や関数のことです。ハッシュ関数には、出力されたハッシュ値から元のデータを逆算することが極めて困難である「一方向性」や、少しでも元のデータが変わると全く異なるハッシュ値が出力される「衝突困難性」という特徴があります。これらを利用して、データの改ざん検知や、データベースにおけるパスワードの安全な保存などに利用されます。
Webサービスでユーザーが登録したパスワード「password123」をそのまま保存せず、ハッシュ関数に通して「e2fc5134…」のような意味不明な値に変換して保存します。ログイン時は、入力された文字のハッシュ値が一致するかどうかだけで判定します。
入力: "hello" --> [ハッシュ関数(SHA-256)] --> 2cf24dba5fb0a30e26e83b2ac5b9e29e...
入力: "hello!" --> [ハッシュ関数(SHA-256)] --> 4a2b16027170a498f3b0ac08a5482329...
(1文字「!」が増えるだけで、出力値は全く異なる値に変わる)