当在Python中使用sha256时,随机十六进制字符串将'无'

问题描述 投票:0回答:1

您能帮我理解这样一个简单的话题吗?我需要生成一个我正在使用的随机十六进制字符串的序列:

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'作为散列。

您能告诉我这是怎么回事。

非常感谢绅士。

python hash hex sha256
1个回答
0
投票

您正在尝试打印h.update()的输出,该输出将为None,因为它不返回任何内容。改为使用

h.update(x.encode())
print(h.hexdigest())

打印出哈希字符串。

© www.soinside.com 2019 - 2024. All rights reserved.