FNV
FNV(Fowler-Noll-Vo)は XOR と素数乗算で高速に計算される単純な非暗号ハッシュであり、ハッシュテーブルやフィンガープリントに使われる。
目的
極めて低オーバーヘッドな非暗号ハッシュを提供し、ハッシュテーブルのキー分散や高速なフィンガープリントに適する。
メカニズム
FNV-1:hash = (hash × FNV_prime) ⊕ byte。FNV-1a:hash = (hash ⊕ byte) × FNV_prime。オフセット基底と素数は語幅で決まる(例:FNV-1a 32 ビットは 2166136261 と 16777619)。非暗号であり衝突耐性はない。
ユースケース
- ハッシュテーブルのキー分散
- 高速な重複排除フィンガープリント
- URL ルーティングハッシュ
- セキュリティ不要のチェックサム
例
- 入力
helloOutput0x4f9f2cabFNV-1a 32-bit
よくあるエラー
- Using FNV for cryptographic authentication
- FNV is not cryptographic; use HMAC-SHA256