使用 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()