【发布时间】:2019-02-10 13:17:54
【问题描述】:
我在看一本关于HashMaphashing functions的Rust书,这两句话看不懂。
默认情况下,HashMap 使用加密安全的哈希函数,可以抵抗拒绝服务 (DoS) 攻击。这不是可用的最快的哈希算法,但性能下降带来的更好的安全性是值得的。
我知道什么是加密安全哈希函数,但我不明白它背后的原理。据我了解,HashMap 的良好哈希函数应该只有三个属性:
- 确定性(同一个对象具有相同的哈希值)
- 非常快,
- 在哈希值中具有均匀的位分布(这意味着它将减少冲突)
密码安全散列函数中的其他属性在 99%(甚至 99.99%)的情况下与散列表并不真正相关。
所以我的问题是:什么是“抵抗 DoS 攻击和更好的安全性” " 甚至在 HashMap 的上下文中是什么意思?
【问题讨论】:
-
您可能会喜欢阅读bugs.php.net/bug.php?id=60623、arstechnica.com/information-technology/2011/12/… 和nikic.github.io/2014/12/22/… 或搜索“php5 哈希表冲突”:)
-
这里有点归结为意见:一个人假设是否更好地为每个人提供“安全”(以性能为代价 95% 不需要安全所有时间)而不是给每个人“快”(以错过需要“安全”而不是“快”的地方为代价)。
-
@GhostCat 如果 5% 的人需要安全,仍然可以provide a custom
BuildHasher。 -
@TimDiekmann 看,我们如何在这里进行讨论?潜在问题有多种选择,并且在某种程度上,我们进入了对如何最好地解决问题有不同意见的业务。在我看来,这个问题有点好,固执己见。
-
@GhostCat 这就是为什么我已经标记为基于意见的原因 ;)
标签: hashmap rust hash-function