SHA256:填充512位长度的消息
SHA256: Padding a 512 bits length message
我目前正在为"定制"嵌入式设备实现SHA256哈希算法。显然,我有一个问题与消息填充。我编写的例程不适用于大小恰好等于512位的消息。
在这种情况下,消息应该如何填充?例如
M = "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPP"
z 即使它开始是512位,您仍然需要填充消息。
FIPS 180-4,§5.1.1解释如下:
假设消息M的长度为L位。将位"1"附加到消息的末尾,后面是k个零位,其中k是等式L + 1+ k≡448 mod 512的最小非负解。然后附加64位块,等于用二进制表示的数字L。
[我将L
替换为不能正确显示的字符]
对于块大小的精确倍数pkcs# 7填充规定必须添加一个填充块,每个字节设置为填充字节数。在AES的情况下,块大小为16字节,因此每个块添加16字节,值为0x10。
参见pkcs# 7 padding
注意:PHP mcrypt不做pkcs# 7填充,必须由用户代码完成。
相关文章:
- boost::进程间消息队列引发错误
- 在线编译器中的分段C++没有打印消息
- C++错误消息*成员参考.**初学者*
- 最高有效数字侧的第N位
- 如何获取一个数字的前3位
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- C / C++ 移位/偏移/向左或向右移动位图?
- 对字符串进行位操作
- 如何在24位SDL_Surface上设置像素的颜色
- 将浮动的heightmap数组导出为16位原始值
- 将尾部调用void(i32,..)位转换为llvm::函数以获取FnAttribute
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- std::ifstream::read 不会读取所有 512 字节,并设置 EOF 和失败位
- 使用OpenSSL的SHA 512 HMAC消息身份验证的问题
- 使用 AVX 对两个 zmm(512 位)寄存器进行异或运算
- 将在64位应用程序中编码Protobuf消息并在32位应用程序中解码
- 转换 256 十六进制表中的 512 位
- SHA256:填充512位长度的消息
- 如何从256位的消息中获取特定的位
- 获取WM_KEYDOWN消息中lParam参数的第30位