加密哈希和非加密哈希-MM是非加密哈希
首先了解下加密哈希和非加密哈希,
加密哈希函数旨在保证安全性,很难找到碰撞。即:给定的散列h很难找到的消息m;很难找到产生相同的哈希值的消息m1和m2。
非加密哈希函数只是试图避免非恶意输入的冲突。作为较弱担保的交换,它们通常更快。如果数据量小,或者不太在意哈希碰撞的频率,甚至可以选择生成哈希值小的哈希算法,占用更小的空间。
Smhasher-评价哈希算法的函数
评价一个哈希算法的好坏,人们通常会引用 SMHasher 测试集的运行结果。
Smhasher 测试Hash函数的功能,测试包括以下几个方面:
- Sanity 是不是可以使用的
- Performance 完成一个散列需要多长时间
- Differentials 产生相同哈希的概率,可能导致相同的的最小差异
- Keysets 分布均匀程度
一系列的测试方式具体可参考:https://github.com/aappleby/smhasher/wiki/SMHasher
MurmurHash
MurmurHash是一种经过广泛测试且速度很快的非加密哈希函数。它有Austin Appleby于2008年创建,并存在多种变体,名字来自两个基本运算,即multiply和rotate(尽管该算法实际上使用shift和xor而不是rotate)。
MurmurHash3可以产生32位或128位哈希,旧版本MurmurHash2产生32位或64位值,MurmurHash2A变体添加了Merkel-Damgard构造,以便可以逐