[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ただいまコメントを受けつけておりません。
ハッシュ関数とは一定のデータを与えると以下の特徴を持つデータに変換してくれる関数。
例えばだが、一定のデータを与えると特定のデータに変換してくれる関数 (ハッシュ関数) の例として
任意のポケモンを与えるとそのタイプに変換してくれる関数が考えられる。
何度やってもピカチュウを与えるとでんきに変換してくれる。しかし、結果であるでんきから「元の値はピカチュウだ」と確定させることはできない。
暗号学的ハッシュ関数には先のハッシュ関数に加えて以下の特性が求められる。
暗号学的ハッシュ関数として SHA-256 や SHA-512 などといったものが有名である。かつては SHA-1 や MD5 等があったが、これらは後に上述の特徴が失われた (弱点が見つかった) ため、もはや暗号学的ハッシュ関数としては使われない。この記事を書いている時点では暗号学的ハッシュ関数として扱われるハッシュ関数ももしかしたらもはや扱われなくなるかもしれない。
ハッシュ関数はデータの検索高速化に便利だ。例えばポケモンを検索するとしよう。何も考えずにピカチュウを検索するには 802 件のデータ全部を検索する必要がある。これに対して、「ピカチュウはでんきタイプだから」とハッシュ値が「でんき」のポケモンだけを集めた一覧だけを検索したら検索すべきデータの数はかなり減る。
暗号学的ハッシュ関数は「元のデータは知られたくない/知りたくない/知らないけど元のデータと照合したい」といったわがままな要求への対処に有効だ。例えば、ユーザが入力したパスワードを暗号学的ハッシュ関数で変換して保存する。するとパスワードを保管している人は「出力から入力を推測できない」特性のためにユーザのパスワードを知ることがない。ユーザがパスワードをログインなどのために再度入力した際は入力をすぐに暗号学的ハッシュ関数にかけて、出力された値を先に保存した値と比較すればよい。
ただし、同じパスワードからは同じ値が出力される点には注意が必要だ。これを解決するための技術としてソルトなどがある。
ただいまコメントを受けつけておりません。