在使用 String.hashCode() 进行测试时,我注意到它没有 avalanche effect .我知道有一个 java 端口 Jenkins hash ,但我想知道是否存在具有此属性的哈希函数,也许在某个 apache 库或其他东西中。
编辑:我正在寻找一个展示此属性并返回 32 位(或 64 位)整数(例如,像 Jenkins 哈希)的函数。我没有将它用于密码学,并且我不打算一般地替换 String.hashCode。我只是以为 hashCode 有这个属性,但事实证明它没有,我想知道 java 的标准库或 apache 库中是否有任何东西可以满足我的需要。
最佳答案
如您链接到的维基百科页面中所述,雪崩效应是加密哈希函数的一个重要属性。 String.hashCode()
不是加密哈希函数。它的唯一目标是为不同的字符串生成充分分布的哈希码,以便 HashMap、HashSet 和所有其他基于哈希的集合在保存字符串时高效。
对于加密哈希函数,请查看 JCA ,它允许生成 SHA-1、MD5 和其他加密摘要,它们都具有您正在寻找的效果。
关于具有雪崩效应的java字符串哈希函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5008633/