我目前正在为我们的一些后端系统构建缓存系统,这意味着我需要某种哈希表来表示缓存的实体。在这种情况下,我想知道是否有人知道任何显示不同算法和引发碰撞所需的最小 ASCII 字符串长度的测试? IE。使用一系列函数进行散列的安全长度(ASCII 字符)是多少?
原因当然是我希望在大小(缓存将代表相对较小的服务器上的数百万个实体)、性能和碰撞安全性之间取得最佳权衡。
提前致谢, 尼克
最佳答案
如果你想要一个强哈希,我建议像 Jenkins Hash 这样的东西.这应该不太可能产生冲突。在算法方面,您正在寻找的是 avalanche test
Bob Jenkins' Site关于这类事情有很多方便的信息。
至于哈希表的大小,我相信 Knuth 建议它足够大,以便在完美哈希的情况下,表的 2/3 将被填满,而 Jenkins 推荐最接近的 2 的更大次方
希望这对您有所帮助!
关于c++ - ASCII 字符哈希冲突测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5621077/