首页 > 解决方案 > python中sha256时随机十六进制字符串得到'none'

问题描述

你能帮我理解这么简单的问题吗?我需要生成一系列我正在使用的随机十六进制字符串:

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

你能告诉我这里发生了什么吗?

非常感谢绅士。

标签: pythonhashhexsha256

解决方案


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

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

打印出一个哈希字符串。


推荐阅读