如何在 python 3 中为 SHA256 提供十六进制输入?

问题描述

我正在尝试获取十六进制值的 SHA256 输出,但只能提供字符串输入。 我使用的 Python 3 代码如下

from hashlib import sha256
hash = sha256(b'0x01')
hx=hash.hexdigest()
print('hx: ',hx)

我得到了什么

hx:  b51c80e50d664f281fedd07ba902a21caadc0c7e0b491ece679497391e9f84cf

我的期望

hx:  4bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459a

预期输出来自在线工具 SHA256 Online,输入类型为十六进制。

解决方法

使用 bytes.fromhex() 将十六进制字符串转换为字节:

from hashlib import sha256
hash = sha256(bytes.fromhex('01'))
hx = hash.hexdigest()
print('hx: ',hx)