CoderTools

FNVハッシュジェネレーター

Fowler-Noll-Vo 非暗号学的ハッシュ関数

FNVハッシュについて

FNVハッシュとは?

FNV(Fowler-Noll-Vo)は、Glenn Fowler、Landon Curt Noll、Kiem-Phong Voによって作成された非暗号学的ハッシュ関数です。1991年に初めて公開され、そのシンプルさ、速度、良好な分布特性で知られています。FNVはハッシュテーブル、チェックサム、データフィンガープリントで広く使用されています。

アルゴリズム変種

  • FNV-1a: バイトとハッシュを先にXORし、次に乗算する改良版。より良いアバランシェ特性により、ほとんどのユースケースに推奨されます。
  • FNV-1: 先に乗算し、次にXORする元の変種。まだ有用ですが、一般的にFNV-1aが推奨されます。

利用可能なビット長

  • 32-bit: 8文字の16進数出力。高速で中程度のデータサイズのハッシュテーブルに適しています。
  • 52-bit: 13文字の16進数出力。JavaScriptの53ビット安全整数範囲に最適化。速度と衝突耐性のバランスが良い。
  • 64-bit: 16文字の16進数出力。大規模データセットでの衝突確率を低減するための大きなハッシュ空間。

一般的なユースケース

  • 高速なキー検索のためのハッシュテーブルとハッシュマップ
  • データ重複排除とコンテンツフィンガープリント
  • データ整合性のためのチェックサム検証
  • ブルームフィルターと確率的データ構造

FNVハッシュは暗号学的に安全ではありません。パスワード、デジタル署名、セキュリティに敏感なアプリケーションには使用しないでください。暗号学的用途にはSHA-256またはBLAKE2を使用してください。

関連ツール