ハッシュの履歴
あらゆる実体につけられる番号のこと。実体が異なるならこの番号は絶対に被らないようにしなければならない。
例えば話を「人間」に限るなら、
- たろう君は「1」
- じろう君は「2」
- さぶろう君は「3」
人が変われば番号も変わる。
もうちょっと限定して「ある日の人間」にするなら
- 1990年1月1日のたろう君は「1aa」
- 1990年1月2日のたろう君は「1ab」
- 1990年1月1日のじろう君は「2aa」
- 1990年1月2日のたろう君は「2ab」
人と日時が変われば番号も変わる。
もうちょっとプログラミングの話に持っていく。
ハッシュ関数の代名詞md5で値を求めてみる。
- md5(a) は 0cc175b9c0f1b6a831c399e269772661
- md5(aa) は 4124bc0a9335c27f086f24ba207a4912
- md5(aaa) は 47bce5c74f589f4867dbd57e9ca9f808
ちなみにmd5のようなものをハッシュ関数、求めた値をハッシュ値という。
md5はコリジョン(違う値を入力したのに、同じハッシュ値がでる)が見つかって現在ではあんまり使わない方がいいらしい。
あと、連想配列のことをハッシュって言ったりする。これは連想配列が上記ハッシュの手法を使って構築されてるから。