哈希函数的随机性
Randomness of a hash function
我了解到随机性和均匀分布对于哈希函数非常重要。
如何比较两个不同哈希函数的 随机性 属性?
取两个差异很小的测试字符串,理想情况下只有一位:BBBBBB
、BBBBBC
。使用散列函数对每个字符串进行散列,然后查看输入中的一位更改会更改多少位输出。一个理想的随机散列函数应该切换第二个输出中的一半位:改变输入中的一位会改变输出中的一半位。密码哈希函数试图接近这个理想,而其他哈希函数在某种程度上接近它,但为了速度牺牲了理想的行为。
对多对几乎相同的字符串重复上述操作,以获得第一个哈希函数的随机性的平均度量。重复第二个哈希函数。最接近平均更改的 50% 的位可能是更随机的哈希函数。
此测试不考虑速度等其他标准。
我了解到随机性和均匀分布对于哈希函数非常重要。 如何比较两个不同哈希函数的 随机性 属性?
取两个差异很小的测试字符串,理想情况下只有一位:BBBBBB
、BBBBBC
。使用散列函数对每个字符串进行散列,然后查看输入中的一位更改会更改多少位输出。一个理想的随机散列函数应该切换第二个输出中的一半位:改变输入中的一位会改变输出中的一半位。密码哈希函数试图接近这个理想,而其他哈希函数在某种程度上接近它,但为了速度牺牲了理想的行为。
对多对几乎相同的字符串重复上述操作,以获得第一个哈希函数的随机性的平均度量。重复第二个哈希函数。最接近平均更改的 50% 的位可能是更随机的哈希函数。
此测试不考虑速度等其他标准。