我的问题是这个。我有一个数据块。有时会更新此数据块并出现新的更改版本。我需要检测我正在查看的数据是否与我期望收到的版本匹配。
我决定使用指纹,这样我就可以避免完整存储“预期”版本的数据。似乎这种事情的“默认”选择是 MD5 哈希。
然而,MD5 被设计为加密安全。有更快的散列函数。我正在研究现代非加密函数,例如 CityHash 和 SpookyHash。
由于我控制系统中的所有数据,因此我只关心更改的数据块散列到相同值的意外冲突。因此,我认为我不必担心加密哈希的“防攻击”性质,并且可以使用更简单的哈希函数。
为此目的使用诸如 CityHash 或 SpookyHash 之类的哈希函数是否有任何问题,或者我应该坚持使用 MD5 吗?还是我应该使用专门为指纹识别设计的东西,例如拉宾指纹?