ハッシュ関数
ハッシュ関数とは
ハッシュ関数とは、入力データを一定の手順で計算し、入力値のデータの長さに関わらず、決まった長さの文字列を出力する関数のことです。
ハッシュ関数により得られたデータのことを「ハッシュ値」と呼びます。
ハッシュ関数は、主に検索の高速化やデータ比較処理の高速化、改ざんの検出、パスワードの管理などで利用されています。
例えば、膨大なサイズのファイルが2つあるとします。この2つのファイルが同一の内容であるか比較するとき、端から順にすべてのデータを比較していると時間がかかります。
そこで、ハッシュ関数を用いてハッシュ値に変換し比較することで、データの比較処理を高速化できます。
スポンサーリンク
暗号学的ハッシュ関数 (一方向性ハッシュ関数)
ハッシュ関数は、入力データが同じであれば、必ず同じハッシュ値を出力します。
しかし、入力データと出力されるハッシュ値の間には規則性がなく、入力データが少しでも異なればまったく異なるハッシュ値が出力されます。
そのため、ある特定のハッシュ値が得られるような入力データを推測するのは困難であり(弱衝突耐性)、同じハッシュ値となる別の入力データも容易には見つけられない(強衝突耐性)という特性を持ちます。
この特性によりハッシュ値から入力データを推測するのは非常に困難といわれています。
ハッシュ関数は、ハッシュ値への変換は簡単に計算できるが、元に戻すことは非常に困難である「一方向性関数」です。
ハッシュ関数の種類
ハッシュ関数には主に次のような種類があります。
名称 | 説明 |
MD5 (Message Digest 5) | 1991年に考案された128ビットの値を生成するハッシュ関数。現在ではセキュリティ用途でMD5を使用するのは安全ではないと言われている。 |
SHA-1 (Secure Hash Algorithm 1) | 1995年に登場したハッシュ関数。2005年頃から効率的に攻撃する手法がいくつか発見されているため、現在ではセキュリティ用途でSHA-1を使用するのは安全ではないと言われている。 |
SHA-2 (Secure Hash Algorighm 2) | 2001年に登場したハッシュ関数。SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256の6つのバリエーションを持ち、SHA-512が最も安全性が高く、一般的にはSHA-256が最もよく利用されている。 |
SHA-3 (Secure Hash Algorighm 3) | 2015年8月5日に正式版が公表された最新のハッシュ関数。 |
helpful
この記事は役に立ちましたか?