SHA256:填充512位长度的消息

时间:2015-10-14 19:02:26

标签: c++ cryptography hashcode sha

我目前正在为一个"定制的"实现SHA256哈希算法。嵌入式设备。 显然我的消息填充有问题。 我编写的例程不适用于大小等于512位的消息。

在这种情况下,如何填充消息? 即。

M = "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPP"

Ž。

2 个答案:

答案 0 :(得分:3)

即使它始于512位,您仍然需要填充消息。

FIPS 180-4,§5.1.1解释如下:

  

假设消息的长度M是L位。将位“1”附加到消息的末尾,然后是k个零位,其中k是等式L + 1 +k≡448mod 512的最小非负解。然后附加64位块,该块等于使用二进制表示法表示的数字L.

[我用L替换了没有正确显示的字符]

答案 1 :(得分:0)

对于块大小的精确倍数的数据PKCS#7填充表示必须添加一个填充块,每个字节设置为填充字节数。在AES的情况下,块大小为16字节,因此每个都添加16字节,值为0x10。

请参阅PKCS#7 padding

注意:PHP mcrypt不执行PKCS#7填充,必须由用户代码完成。