什么是 sha-256 填充?

Kon*_*rad 4 sha

研究了一个 cpu 矿工的源代码,我发现了这段代码:

work->data[20] = 0x80000000;
Run Code Online (Sandbox Code Playgroud)

好吧,我问了编码,他的回答是:

“这些值是标准 SHA-2 填充的一部分”

谷歌搜索“sha 2 padding”没有帮助。你能告诉我这是做什么用的吗?

我认为md5/sha256函数只是获取数据并返回哈希值。

我不明白“填充”的概念。

Ste*_*ppo 5

您可以在RFC 4634 -- SHA 和 HMAC-SHA 的第 4.1 节中找到它。引自第 4 部分的介绍:

总而言之,“1”后跟多个“0”后跟 64 位或 128 位整数被附加到消息的末尾。

0x8000000010000000000000000000000000000000二进制的。这是您的“1”,后跟一些“0”

原因是 SHA-256 通过将输入分成固定大小的块来处理输入。最后一个块可能更小,所以它被扩展(填充)直到它的大小与预期的块大小匹配。