ハッシュ関数とは?
ハッシュ関数とは、入力されたデータに一定の手順で計算を行い、入力値の長さによらずあらかじめ決められた固定長の出力データを得る関数のことである。得られた値は「ハッシュ値」(hash value)と呼ばれる。
ハッシュ関数のあれこれ!
ハッシュ関数は、同じ入力からは常に同じ出力が得られる。どのような長さの入力もすべて同じ長さ(実用上は数バイトから数十バイト程度が多い)の出力を得ることができる。しかし、計算過程で情報が欠落するため、出力値(だけ)を元に入力値を逆算することはできない。
また、ハッシュ値は元のデータの特徴を表す短い符号として利用することができ、データの比較や検索を高速化することができる特徴がある。。例えば、大きな容量のファイルの内容が同一であるかを比較する際に、端から順にすべてのデータを照合すれば時間が掛かかってしまう。しかし、それぞれハッシュ値を計算しておいて比較すれば一致するかどうかは一瞬で判別することができるようになる。用途や特性により様々な計算手法があり、データの改ざんや破損の検知、類似データの探索などにも応用されている。
○ハッシュ値(hash value)
ハッシュ値とは、元になるデータから一定の計算手順により求められた固定長の値のことである。その性質から暗号や認証、データ構造などに応用されている。ハッシュ値を求めるための計算手順のことをハッシュ関数、要約関数、メッセージダイジェスト関数などという。
別名、ダイジェスト値(digest value)ともいう。
○ハッシュ化(hashing)
ハッシュ化とは、元のデータから一定の計算手順に従ってハッシュ値と呼ばれる規則性のない固定長の値を求め、その値によって元のデータを置き換えることである。パスワードの保管などでよく用いられる手法である。
○ハッシュテーブル(hash table)
ハッシュテーブルとは、データ構造の一つであり、標識(キー:key)と対応する値(value)のペアを単位としてデータを格納し、キーを指定すると対応する値を高速に取得できる構造のことである。