密码学的Padding填充常见的有以下几种:Bit padding(位填充)、Byte padding(字节填充)、ANSI X9.23、ISO 10126、PKCS#5 和 PKCS#7、ISO/IEC 7816-4、Zero padding(零填充)。

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

参考文章:

https://en.wikipedia.org/wiki/Padding_(cryptography)