研究了一个 cpu 矿工的源代码,我发现了这段代码:
work->data[20] = 0x80000000;
Run Code Online (Sandbox Code Playgroud)
好吧,我问了编码,他的回答是:
“这些值是标准 SHA-2 填充的一部分”
谷歌搜索“sha 2 padding”没有帮助。你能告诉我这是做什么用的吗?
我认为md5/sha256函数只是获取数据并返回哈希值。
我不明白“填充”的概念。
您可以在RFC 4634 -- SHA 和 HMAC-SHA 的第 4.1 节中找到它。引自第 4 部分的介绍:
总而言之,“1”后跟多个“0”后跟 64 位或 128 位整数被附加到消息的末尾。
0x80000000是10000000000000000000000000000000二进制的。这是您的“1”,后跟一些“0”。
原因是 SHA-256 通过将输入分成固定大小的块来处理输入。最后一个块可能更小,所以它被扩展(填充)直到它的大小与预期的块大小匹配。
| 归档时间: |
|
| 查看次数: |
10354 次 |
| 最近记录: |