
ハッシュ
「ハッシュ」という言葉を聞いたことがありますよね?
「ハッシュテーブル」とか「ハッシュ値」の「ハッシュ」ですね。
ここで紹介するのはIT用語としての「ハッシュ」です。この場合は「ハッシュ値」のことであり、ハッシュ関数から返される値を指しています。
こんな説明では分からないと思いますので、少し詳しく見ていきましょう。
ハッシュとは
ここからはIT用語としての「ハッシュ」について説明していきます。
すなわち「ハッシュ値」のことであり、英語だと「hash value」です。
意味はハッシュ関数から返される値であり、つまりは元データから作られる一見すると適当に見える数値となります。
これだけだとまだまだ分かりにくいですよね。「ハッシュ関数」が関係していますので、関数の予備知識から見ていきましょう。
関数とはプログラムを組む際の部品の1つです。
入力を受けて処理を行い、その後に出力をするというフローを踏みます。ここで入れる値を「引数」、出てくる値を「戻り値」呼ぶのです。
この関数の中に「ハッシュ関数」というものがあります。
関数なので引数と戻り値のフローとなるのですが、こちらの場合では引数から何の戻り値が出てくるか分かりません。
なぜなら、入れた数値から適当な数値を作り、その後出力されるので何が出てくるのかは分からないのです。
ただ、入れる値と出てくる値は必ず毎回一致します。
元のデータが同じなら、出力される戻り値である「ハッシュ値」は毎回同じということです。
このことより以下の特徴があります。
- ハッシュ値より元データを特定することはできない(ほとんど)
- 元データが同じであれば「ハッシュ値」は一致する
- 元データが変わると、引数が同じでも戻り値の「ハッシュ値」は全く異なる
この3つが大きな特徴です。
ハッシュの使い道は?
ここまで読んで、なんとなく「ハッシュ」の仕組みが分かったと思います。
でも、使い道に疑問が残る方が多いのではないでしょうか?
「ハッシュ」の使い道はズバリ、「データチェック」です。元データが同じなら出力される「ハッシュ値」は同じでした。
つまり、途中でデータがおかしくなっていないか?を「ハッシュ関数」を使って調べることができます。
元データが変わっていないのに、同じ引数を入れると違う「ハッシュ値」が返ってきたらおかしいということですね。
このほかにも、キーと値をセットで管理するデータ構造の「ハッシュテーブル」などに利用されます。
ハッシュの使い方
1.「ハッシュ」関数は暗号など情報セキュリティ用途にも適する
2.「ハッシュ」値の計算の方法を教えてください
なんかTLでちょっと暗号化とハッシュの違いみたいなのが話題だったのでまとめてみました。 pic.twitter.com/Fx6bt7iER3
— mina (@silmin_) 2019年1月29日