ハッシュ値 【hash value】 ダイジェスト値 / digest value / 要約値 / メッセージダイジェスト / message digest / ハッシュコード / hash code
概要
ハッシュ値(hash value)とは、元になるデータから一定の計算手順により求められた固定長の値。その性質から暗号や認証、データ構造などに応用されている。ハッシュ値を求めるための計算手順のことをハッシュ関数、要約関数、メッセージダイジェスト関数などという。ハッシュ値は元のデータの長さによらず一定の長さとなっており、同じデータからは必ず同じハッシュ値が得られる。実用上は数バイトから数十バイト程度の長さとすることが多い。計算過程で情報の欠損が起きる不可逆な変換が含まれ、ハッシュ値から元のデータを復元することはできない。
ハッシュ値は元のデータの特徴を表す短い符号として利用することができ、データの比較や検索を高速化することができる。例えば、大きな容量のファイルの内容が同一であるかを比較する際に端から順にすべてのデータを照合すれば時間が掛かるが、それぞれハッシュ値を計算しておいて比較すれば一致するかどうかは一瞬で判別することができる。
ハッシュ関数のうち、暗号などに適した性質を持つものを「暗号学的ハッシュ関数」という。このような関数から得られたハッシュ値は、入力値との間に規則性がなく、入力値が少しでも異なればまったく異なるハッシュ値となる。
また、ある特定のハッシュ値が得られるような入力値を効率よく求めることはできず(弱衝突耐性)、同じハッシュ値となる別の入力値も容易には見つけられない(強衝突耐性)。
このようなハッシュ関数は非常に有用であり、暗号化や認証、デジタル署名など様々なセキュリティ技術の基礎的な要素技術として応用されている。算出法についての標準規格も定められ、古くはMD5やSHA-1などが広く普及したが、これらは現在では十分安全でないことが知られ、SHA-2(SHA-256など)への置き換えが進んでいる。
(2020.2.27更新)