非加密哈希与CRC-32等相比,数据错误检测能力如何?
非加密哈希为何在数据完整性校验场景中鲜被推荐?
咱先唠唠这类非加密哈希的定位:MurmurHash3、xxHash这类算法,几乎是专为哈希表场景量身打造的,但它们的性能表现其实和CRC-32、Adler-32、Fletcher-32这类经典校验和算法不相上下,甚至在不少场景下更优。
而且有意思的是,非加密哈希通常比CRC-32更快,输出的“随机性”也更强,这点和MD5、SHA这类速度偏慢的加密哈希表现很类似。
但实际情况却有点反常——在数据完整性校验或者校验和的场景里,我发现大家几乎都只推荐CRC-32或者MD5,反而很少提及这些非加密哈希。
为了弄明白背后的原因,我专门针对32位校验和/CRC/哈希函数做了一组测试,来验证……
内容的提问来源于stack exchange,提问作者bryc




