コンテンツへスキップ
uencoder

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 ルーティングハッシュ
  • セキュリティ不要のチェックサム

例

  • 入力
    hello
    Output
    0x4f9f2cab

    FNV-1a 32-bit

よくあるエラー

Using FNV for cryptographic authentication
FNV is not cryptographic; use HMAC-SHA256

関連用語

関連ツール

References