0

好的,让这个哈希生成器按照我想要的方式工作,只是它不能正确生成哈希。我已经检查了从我的脚本生成的一些哈希值与在其他网站上找到的哈希值,它们一直不匹配。这似乎是所有哈希的问题,所以我认为它必须对哈希函数和 data.encode("utf8") 做一些事情。

4

1 回答 1

2

根据文档

hash.update(arg)

使用对象 arg 更新散列对象,该对象必须可解释为字节缓冲区。重复调用等效于连接所有参数的单个调用:m.update(a); m.update(b)等效于m.update(a+b).

因此,您将所有组合连接在一起。

相反,您需要在每次hasher调用时创建一个新的 Hash 对象:

Hashes = {
    'MD5': hashlib.md5,
    'SHA1': hashlib.sha1,
    'SHA224': hashlib.sha224,
    'SHA256': hashlib.sha256,
    'SHA384': hashlib.sha384,
    'SHA512': hashlib.sha512
}

...

return Hash(data.encode("utf8")).hexdigest()
于 2013-03-02T03:52:38.157 回答