当 python 中的 sha256 时,随机十六进制字符串得到 'none'
Random hex string get 'none' when sha256 in python
你能帮我理解这么简单的主题吗?我需要生成一系列我正在使用的随机十六进制字符串:
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,因为它没有 return 任何内容。而是使用
h.update(x.encode())
print(h.hexdigest())
打印哈希字符串。
你能帮我理解这么简单的主题吗?我需要生成一系列我正在使用的随机十六进制字符串:
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,因为它没有 return 任何内容。而是使用
h.update(x.encode())
print(h.hexdigest())
打印哈希字符串。