ハッシュアルゴリズムとは、任意の長さのデータ(入力値)を、固定長の短いデータ(ハッシュ値)に変換する計算手法や関数のことです。この変換プロセスを「ハッシュ化」と呼びます。
このゲームで体験しているのは、ハッシュアルゴリズムを応用したハッシュテーブルというデータ構造です。ハッシュテーブルは、キーと値をペアで格納し、キーから値を非常に高速に検索・追加・削除できます。
入力値 % 7
という非常にシンプルなハッシュ関数を使っています。入力された数値を7で割った余りを計算し、それを配列のインデックス(格納場所)としています。
10 % 7 = 3
と17 % 7 = 3
のように、10と17は同じインデックス[3]を目指します。このゲームでは、コリジョンを解決する代表的な2つの方法を体験できます。
ハッシュアルゴリズムはその高速性と一方向性(ハッシュ値から元の値を推測するのが困難)という特性から、現代のIT技術の様々な場面で活用されています。
Webサービスでは、ユーザーのパスワードをそのままデータベースに保存するのではなく、ハッシュ化して保存します。万が一データベースの情報が漏洩しても、ハッシュ値から元のパスワードを特定するのは極めて困難なため、安全性が高まります。ログイン認証時には、入力されたパスワードを同じ方法でハッシュ化し、保存されているハッシュ値と一致するかどうかで本人確認を行います。
このゲームで体験している通り、大量のデータの中から特定の情報を高速に探し出すために利用されます。プログラミング言語における連想配列 (Dictionary
,
Map
) や、データベースシステムのインデックスなど、内部的にはハッシュテーブルが使われていることが多くあります。
大きなファイルをダウンロードした際、そのファイルが通信途中で壊れたり、改ざんされたりしていないかを確認するために使われます。配布元が公開しているファイルのハッシュ値と、ダウンロードしたファイルのハッシュ値を比較し、一致すればデータが完全であることが保証されます。これは「チェックサム」とも呼ばれます。
ビットコインなどの暗号資産で利用される技術です。ブロックチェーンでは、各ブロック(取引データの塊)が直前のブロックのハッシュ値を持っています。この仕組みにより、過去の取引記録を改ざんすると、それ以降のすべてのブロックのハッシュ値を再計算する必要があり、改ざんが事実上不可能になります。これにより、データの信頼性が担保されています。