gpt4 book ai didi

python - 无需重新计算即可获取字典键哈希

转载 作者:行者123 更新时间:2023-11-28 22:37:36 26 4
gpt4 key购买 nike

有没有办法从字典中提取现有的键哈希值,而无需再次重新计算它们?

暴露它们并因此通过散列而不是键访问字典会有什么风险?

最佳答案

我认为 Python 的字典对象没有任何公共(public) API 可以让您查看存储对象的哈希值。您不能在 Python 代码中直接通过哈希存储对象(通过在 CPython 中调用内部 C 函数可能是可能的)。有几个很好的理由表明您不能通过哈希值而不是键将值添加到字典中。

最明显的是多个键对象可能具有相同的散列。如果发生这样的哈希冲突,第二个值将被插入到哈希表的其他地方。重要的是它不会覆盖存储在不同 key 下的先前值,该 key 具有相同的哈希值。如果您可以只传递散列而不是 key ,Python 将无法判断您是否使用了相同的 key ,或者您是否提供了碰巧具有冲突散列的新 key 。

不能按哈希插入的第二个原因是它会成为一个安全漏洞。像 Python 的字典这样的哈希表在哈希冲突很少的情况下性能非常好。但是,如果每个散列都相同,那就太糟糕了。如果您可以将数据提交给所有哈希值都相同的 Python 程序,则可以执行非常有效的拒绝服务攻击(在最新版本的 Python 中添加了新的字符串哈希随机化,使这种攻击更加困难)。

关于python - 无需重新计算即可获取字典键哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36364651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com