我正在使用 Python 2 ,并尝试使用hashlib对二进制值执行 sha256。
我变得有点卡住了,因为我对这一切都很陌生但是拼凑在一起:
hashlib.sha256(' 0110100001100101011011000110110001101111'.decode('十六进制&#39))。hexdigest()
我相信它会将字符串解释为十六进制,基于将十六进制值('68656c6c6f')替换为上面并返回
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
与使用'hello'或'68656c6c6f'的this answer进行比较。
我认为答案在于解码组件,但我找不到二进制的例子'hex'或'utf-8'
是否有人能够建议需要更改的内容,以便函数将其解释为二进制值而非十六进制?
答案 0 :(得分:0)
以下是执行您要查找的每个数据转换的代码。这些步骤都可以组合在一起,但在此处分开,以便您可以看到每个值。
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