Python哈希3:是否需要对每个字符串执行.encode()



我正在从Python 2迁移到Python 3,想知道是否每个字符串文字现在都需要编码才能进行哈希。示例代码将在Python 2:下完美运行

import hashlib
string = "robots"
hashlib.md5(string).hexdigest()

然而,使用Python3,它抛出了一个TypeError: Unicode-objects must be encoded before hashing,所以我必须在每个字符串后面附加一个.encode(),或者我在这里遗漏了什么?

hashlib仅对类似对象的字节进行操作,文档明确指出:

注意:不支持将字符串对象馈送到update()中,因为哈希处理的是字节,而不是字符。

因此,每当您想在Python3中散列str对象时,都必须首先对其进行编码。

最新更新