sha - 什么是 sha-256 填充?

标签 sha

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

work->data[20] = 0x80000000;

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

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

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

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

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

最佳答案

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

As a summary, a "1" followed by a number of "0"s followed by a 64-bit or 128-bit integer are appended to the end of the message.

0x8000000010000000000000000000000000000000以二进制形式。这是您的“1”,后跟一些“0”。
原因是 SHA-256 通过将输入分成固定大小的块来处理输入。最后一个块可能更小,所以它被扩展(填充)直到它的大小与预期的块大小匹配。

关于sha - 什么是 sha-256 填充?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24183109/

相关文章:

Java 的 SHA-256 有时会返回 255 位

java - 为 torrent 计算的 info_hash 不正确

ssl - 如何在命令行上检查我的 SSL 证书是 SHA1 还是 SHA2

c - 两个不同数组的相等性

java - SHA 将相同的字符串散列到不同的 blob 中

java - jarsigner : java. lang.SecurityException :SHA1 digest error for META-INF/CERT. 更新应用程序时出现 RSA android 错误

php - php mysqli_connect : authentication method unknown to the client [caching_sha2_password]

java - 压缩 SHA-256 哈希

c# - 如何在 C# 中生成可证明公平的掷骰子?

python - 在 Python 中,使用尽可能少的字符表示 SHA-256 哈希