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