Python 如何使用Hashlib对二进制值执行SHA-256?
我正在使用Python2并试图使用hashlib对二进制值执行sha256。 我有点被卡住了,因为我对这一切都很陌生,但已经拼凑起来了: hashlib.sha256('01101001010110110001101100011111')。解码('hex')).hexdigest() 我相信它将字符串解释为十六进制,其基础是将十六进制值('68656C6F')替换为上述值并返回 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 与使用“hello”或“68656c6f”进行比较 我认为答案在于解码组件,但我找不到仅二进制“十六进制”或“utf-8”的示例Python 如何使用Hashlib对二进制值执行SHA-256?,python,binary,decode,sha256,hashlib,Python,Binary,Decode,Sha256,Hashlib,我正在使用Python2并试图使用hashlib对二进制值执行sha256。 我有点被卡住了,因为我对这一切都很陌生,但已经拼凑起来了: hashlib.sha256('01101001010110110001101100011111')。解码('hex')).hexdigest() 我相信它将字符串解释为十六进制,其基础是将十六进制值('68656C6F')替换为上述值并返回 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938
是否有人能够建议需要更改哪些内容,以便将函数解释为二进制值而不是十六进制值?以下是执行您正在寻找的每个数据转换的代码。这些步骤都可以合并,但在这里是分开的,因此您可以看到每个值
import hashlib
import binascii
binstr = '0110100001100101011011000110110001101111'
hexstr = "{0:0>4X}".format(int(binstr,2)) # '68656C6C6F'
data = binascii.a2b_hex(hexstr) # 'hello'
output = hashlib.sha256(data).hexdigest()
print output
输出:
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824