FNV
FNV(Fowler-Noll-Vo)是简单的非加密哈希,通过异或与素数乘法快速计算,用于哈希表与指纹。
用途
提供极低开销的非加密哈希,适合哈希表键分布与快速指纹。
机制
FNV-1: hash = (hash × FNV_prime) ⊕ byte;FNV-1a: hash = (hash ⊕ byte) × FNV_prime。初始 offset basis 与 prime 由位宽决定(如 FNV-1a 32 位用 2166136261 与 16777619)。非加密,不抗碰撞。
用例
- 哈希表键分布
- 快速去重指纹
- URL 路由哈希
- 非安全场景校验
示例
- 输入
hello输出0x4f9f2cabFNV-1a 32-bit
常见错误
- Using FNV for cryptographic authentication
- FNV is not cryptographic; use HMAC-SHA256