使用 SHA-256 处理 Python 中的字节
Working with bytes in Python using SHA-256
所以我想将 SHA-256 用于特定问题:从字节数组计算摘要,然后将生成的摘要连接到另一个字节块(此问题的 1024 字节块)并计算连接的摘要值。
例如:
这是我的两个字节块:
from hashlib import sha256
rawhex4 = b'\x44'*773
rawhex3 = b'\x33'*1024
h = sha256()
h.update(rawhex4)
aux = h.digest()
这个十六进制摘要是:d8f8a9eadd284c4dbd94af448fefb24940251e75ca2943df31f7cfbb6a4f97ed
然后我想将这个 32 字节的摘要连接到我的下一个块并对其进行哈希处理,但我没有得到正确的答案。我执行以下操作:
h.update(rawhex3 + aux)
我知道哈希 rawhex3 + hash(rawhex4) 会给我这个摘要:
26949e3320c315f179e2dfc95a4158dcf9a9f6ebf3dfc69252cd83ad274eeafa
我可能遗漏了什么?我是 Python
的新手
您正在重复使用已经包含来自 rawhex4
的位的散列对象。
如果您创建一个新的,您将得到 26..fa
结果。
试试这个:
from hashlib import sha256
rawhex4 = b'\x44'*773
rawhex3 = b'\x33'*1024
h1 = sha256()
h1.update(rawhex4)
aux = h1.digest()
h2 = sha256()
h2.update(rawhex3 + aux)
print h2.hexdigest()
所以我想将 SHA-256 用于特定问题:从字节数组计算摘要,然后将生成的摘要连接到另一个字节块(此问题的 1024 字节块)并计算连接的摘要值。
例如:
这是我的两个字节块:
from hashlib import sha256
rawhex4 = b'\x44'*773
rawhex3 = b'\x33'*1024
h = sha256()
h.update(rawhex4)
aux = h.digest()
这个十六进制摘要是:d8f8a9eadd284c4dbd94af448fefb24940251e75ca2943df31f7cfbb6a4f97ed
然后我想将这个 32 字节的摘要连接到我的下一个块并对其进行哈希处理,但我没有得到正确的答案。我执行以下操作:
h.update(rawhex3 + aux)
我知道哈希 rawhex3 + hash(rawhex4) 会给我这个摘要:
26949e3320c315f179e2dfc95a4158dcf9a9f6ebf3dfc69252cd83ad274eeafa
我可能遗漏了什么?我是 Python
的新手您正在重复使用已经包含来自 rawhex4
的位的散列对象。
如果您创建一个新的,您将得到 26..fa
结果。
试试这个:
from hashlib import sha256
rawhex4 = b'\x44'*773
rawhex3 = b'\x33'*1024
h1 = sha256()
h1.update(rawhex4)
aux = h1.digest()
h2 = sha256()
h2.update(rawhex3 + aux)
print h2.hexdigest()