Adler32 和 CRC 具有f(a || b)
可以从、和廉价计算的属性。是否有任何其他具有此属性的常见非加密哈希函数?f(a)
f(b)
len(b)
上下文(为了避免 XY 问题)是我通过将字符串拆分成块来删除重复数据,这些块由它们的哈希索引。然后可以将输入字符串表示为串联的块序列。我想使用一个散列函数,使字符串的所有表示具有相同的散列,可以直接从块散列计算而不需要底层数据,因为它以未指定的顺序流式传输,因此可能不可用任何时候都在同一个地方。
我的设计需要大约 2^32 个块。碰撞是非常昂贵的,但不会损害正确性。基于此,我认为CRC64 会起作用,但我很好奇我的替代方案是什么。我不介意 128 位哈希用于未来的校对(如:数据集大小可能会增长)。