密码学的Padding填充
文章目录
密码学的Padding填充常见的有以下几种:Bit padding(位填充)、Byte padding(字节填充)、ANSI X9.23、ISO 10126、PKCS#5 和 PKCS#7、ISO/IEC 7816-4、Zero padding(零填充)。
- Bit padding(位填充):
- 位填充可以应用于任意长度的消息。
- 在消息的末尾添加一个 ‘1’ 位,然后添加所需数量的 ‘0’ 位,直到消息扩展到下一个块的边界。在位术语中,这表示为 “1000 … 0000”。
- 例如,如果消息的位数为 23 位,需要填充 9 位以填充到 32 位块,则填充后的消息如下所示:
... | 1011 1001 1101 0100 0010 0111 0000 0000 |
。
- Byte padding(字节填充):
- 字节填充适用于可以编码为整数个字节的消息。
- ANSI X9.23、ISO 10126、PKCS#5 和 PKCS#7 等填充方案属于字节填充的一种。
- 字节填充的一个示例是 ANSI X9.23,它始终添加 1 到 8 个字节的填充,填充块随机字节,最后一个字节设置为添加的字节数。
- ANSI X9.23:
- ANSI X9.23 是一种填充方案,用于将消息扩展到下一个块的边界。
- 它在消息的末尾添加随机字节,并将块的最后一个字节设置为添加的字节数。
- ISO 10126:
- ISO 10126 是一种填充方案,用于在消息的末尾添加随机字节,并使用最后一个字节指定填充的边界。
- PKCS#5 和 PKCS#7:
- PKCS#5 和 PKCS#7 是密码学标准,定义了一种填充方案,用于在对称密码算法中将消息扩展到下一个块的边界。
- 在这两种填充方案中,添加的每个字节的值都等于添加的字节数。
- 例如,对于 PKCS#7,如果需要填充 4 个字节,则填充为
04 04 04 04
。
- ISO/IEC 7816-4:
- ISO/IEC 7816-4 是一种填充方案,用于将消息扩展到下一个块的边界,但它适用于平面文本而不是位。
- Zero padding(零填充):
- 零填充将所有需要填充的字节填充为零。
- 零填充方案没有标准化用于加密,但在散列和消息认证码中经常使用。
- 例如,如果需要填充 4 个字节,则填充为
00 00 00 00
。
参考文章:
文章作者 HiOFD
上次更新 2024-04-19