不要用密码学哈希函数作为哈希表键

#Tech

本文探讨了在哈希表中直接使用密码学哈希函数(如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 段。完整内容请阅读原文。

阅读原文 ↗