小能豆

旧的 Python 散列从左到右完成 - 为什么它不好?

py

Gruyere 应用程序正在使用此方法来加密数据:

# global cookie_secret; only use positive hash values
h_data = str(hash(cookie_secret + c_data) & 0x7FFFFFF)

c_data 是用户名;cookie_secret 是静态字符串(默认情况下为 ‘’)

我知道在更安全的哈希函数中,一个改变会生成一个全新的结果,但我不明白为什么这不安全,因为不同的 c_data 会生成完全不同的哈希!

编辑:如何才能打败这样的哈希呢?


阅读 22

收藏
2025-01-02

共1个答案

小能豆

该评论可能试图表达的是,对于大多数哈希函数,如果给定HASH(m),那么很容易计算HASH(m . x),对于任何x(其中.是连接)。

因此,如果您是用户ro,并且服务器向您发送HASH(secret . ro),那么您可以轻松计算HASH(secret . root),并以其他用户身份登录。

2025-01-02