不要用密码学哈希函数作为哈希表键
本文探讨了在哈希表中直接使用密码学哈希函数(如SHA-256)作为键的潜在问题。
尽管密码学哈希函数具有良好的分布特性,但如果攻击者可以控制输入,则它们可能导致哈希表退化,例如连锁表过长或扩展哈希表的目录深度过大。
解决此问题的方法是使用包含密钥的哈希函数,例如SipHash对SHA-256的输出,从而使攻击者无法预测哈希结果并避免哈希表性能下降。
文章强调,密码学哈希函数并非在任何情况下都更安全。
查看原文开头(英文 · 仅前 3 段)
A hash table maps keys to buckets
(or, sometimes, more complex schemes such as
bucket directories and sizes,
※ 出于版权考虑,仅引用前 3 段。完整内容请阅读原文。