Gruyere 应用程序正在使用此方法来加密数据:
# global cookie_secret; only use positive hash values h_data = str(hash(cookie_secret + c_data) & 0x7FFFFFF)
c_data 是用户名;cookie_secret 是静态字符串(默认情况下为 ‘’)
我知道在更安全的哈希函数中,一个改变会生成一个全新的结果,但我不明白为什么这不安全,因为不同的 c_data 会生成完全不同的哈希!
编辑:如何才能打败这样的哈希呢?
该评论可能试图表达的是,对于大多数哈希函数,如果给定HASH(m),那么很容易计算HASH(m . x),对于任何x(其中.是连接)。
HASH(m)
HASH(m . x)
x
.
因此,如果您是用户ro,并且服务器向您发送HASH(secret . ro),那么您可以轻松计算HASH(secret . root),并以其他用户身份登录。
ro
HASH(secret . ro)
HASH(secret . root)