ハッシュとは
ハッシュは、通常はテキスト形式の可変長のデータ文字列を取得し、それをより短い固定長の数値に変換する数式です。 ハッシュは、検索をより高速かつ効率的にするために、コンピューターデータベースで頻繁に使用されます。 また、暗号化で使用され、パスワードが危険にさらされないようにし、デジタル署名を認証します。 ハッシュはハッシュ関数の名前でも使用され、アルゴリズムと見なすこともできます。
ハッシュは、データベース検索の促進に大きな役割を果たします。 たとえば、名前で構成されるデータベースでは、ユーザーが「John Doe」を検索する場合、コンピューターは検索のすべての文字をすべてのデータベースエントリの文字に一致させる必要があります。 名前のすべての文字には26の異なる可能性(英語のアルファベットの文字)がありますが、エントリの可変長も検索を遅くします。
対照的に、ハッシュ関数を適用すると、コンピューターの寿命がずっと楽になります。 各テキスト文字列を一連の数字に変換すると、コンピューターは各文字をチェックする10の可能性(数字「0」から「9」)しか持てないため、検索が簡単になります。より効率的に仕事。
ハッシュ関数が適用されたデータベースでは、すべてのエントリに対応する一意の番号があります。 これはハッシュキーと呼ばれます。 この場合、検索を行うと、コンピューターは最初に「John Doe」などの記述した入力にハッシュ関数を適用します。これにより、「456789」などの数値が生成されます。この結果を正しいエントリに対応するハッシュキーに一致させます。
ハッシュはデジタル署名としても機能します。 たとえば、送信者のロバートはドキュメントを誰かに送信し、受信者のメアリーはドキュメントが途中で改ざんされていないことを確認したいと考えています。 送信者のロバートは、ハッシュ関数を介してドキュメントを実行するだけでよく、その結果、数値が得られます。 その後、ロバートはハッシュキーを暗号化し、暗号化されたキーとともにドキュメントを送信します。
メアリーは両方のアイテムを受け取り、ハッシュキーを解読します。 これで、ドキュメントが送信される前に、ドキュメントから得られた数値を見ることができます。 彼女の手にある文書がまったく同じであることを確認するために、彼女は自分のコンピューターでハッシュ関数を使用して文書を実行します。 最後に、彼女は両方のキーを比較します。 それらが同じである場合、ドキュメントは受信者への途中で変更されていません。
多くの異なるハッシュ関数が存在し、それぞれに独自の数式があります。 ハッシュ関数が機能するには、2つのデータベースエントリが同じハッシュキーを持つときに発生する衝突を最小限に抑える必要があります。 ハッシュ関数も一方向でなければなりません。 つまり、データベースエントリまたはドキュメントからキーを生成できますが、その逆はできません。 つまり、ハッシュキーから元のドキュメントを「リバースエンジニアリング」することはできません。