実用上のまとめ
- SHA-2のsha256使っとけ
メモ本体
暗号学的ハッシュ関数について言うと、既知だけどMD5とかSHA1はもう安全じゃない。今現役と思われるSHA2への攻撃はまだ成功してない。SHA3はドラフトまできてて、アルゴリズムはKeccakという名前らしい(読み方がわからん。ケチャクかケチャックっぽい?)
暗号学的でない(DBMに使うような)ハッシュ関数について調べた結果を見ると、割と普通の範囲でも衝突が発生している。用途に支障なければ問題ないのか。
cdbが内部的に使ってるdjb-hashの定数5381は魔法の定数だそう。cdb超絶速いけど、動的に内容を変えれないと用途が限定されるような。dbskkd-cdbとか。
Perfect hash functionっていうワードを見つけたけど、そういう魔法のようなものではなくて、完全ハッシュ関数に書いてあるとおり、条件が限定できるなら可能とのこと。なるほど。