c++ - ASCII 字符哈希冲突测试

标签 c++ caching hash collision

我目前正在为我们的一些后端系统构建缓存系统,这意味着我需要某种哈希表来表示缓存的实体。在这种情况下,我想知道是否有人知道任何显示不同算法和引发碰撞所需的最小 ASCII 字符串长度的测试? IE。使用一系列函数进行散列的安全长度(ASCII 字符)是多少?

原因当然是我希望在大小(缓存将代表相对较小的服务器上的数百万个实体)、性能和碰撞安全性之间取得最佳权衡。

提前致谢, 尼克

最佳答案

如果你想要一个强哈希,我建议像 Jenkins Hash 这样的东西.这应该不太可能产生冲突。在算法方面,您正在寻找的是 avalanche test
Bob Jenkins' Site关于这类事情有很多方便的信息。
至于哈希表的大小,我相信 Knuth 建议它足够大,以便在完美哈希的情况下,表的 2/3 将被填满,而 Jenkins 推荐最接近的 2 的更大次方

希望这对您有所帮助!

关于c++ - ASCII 字符哈希冲突测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5621077/

相关文章:

c++函数性能中的静态变量

c++ - x++ 和++x 在c 中不能作为左值(左值)?

caching - 缓存缓存更改会阻止崩溃吗?

ruby-on-rails - 如何在不使用 eval 的情况下将字符串转换为 Ruby on Rails 中的散列?

javascript - 哈希和数字

hash - 我可以在摘要式身份验证中使用已 MD5 编码的密码吗

c++ - 显示扩展的 ASCII 字符

c++ - 使用 std::move c++11 后会持续什么

php - 在 RAM + 服务器性能中缓存 MaxMind City 二进制数据库

html - jQuery 手机 : Dynamically loaded content bloating the DOM