您能帮我理解这样一个简单的话题吗?我需要生成一个我正在使用的随机十六进制字符串的序列:
import secrets
x = secrets.token_hex(32)
这给了我类似的东西:
d6d09acbe78c269147803b8c351214a6e5f39093ca315c47e1126360d0df5369
完全可以。现在,我需要将其传递给我正在使用的SHA256哈希:
h = hashlib.new('sha256')
print (h.update(x))
获取错误:
TypeError: Unicode-objects must be encoded before hashing
我读到我需要在使用.encode()传递散列之前对字符串进行编码,以获得一个完全奇怪的东西:
b'd6d09acbe78c269147803b8c351214a6e5f39093ca315c47e1126360d0df5369'
,并且结果为'none'作为散列。
您能告诉我这是怎么回事。
非常感谢绅士。
您正在尝试打印h.update()的输出,该输出将为None,因为它不返回任何内容。改为使用
h.update(x.encode())
print(h.hexdigest())
打印出哈希字符串。