分组密码算法的填充模式

分组密码中,需要将明文按指定大小进行分组,由于明文并非分组加密算法块大小的整数倍,因此在明文的最后一个分组需要将其填充至加密算法所要求的分组大小后进行加密。

在解密时,按照同样的填充模式将填充的数据去除。

需要注意的是,如果使用了填充算法,即使明文正好是分组加密算法的整数倍时,也需要进行填充。填充后的字节数为:

\begin{cases} p + n & \text{if } p \equiv 0 \pmod {n} \\\\ \Big \lceil \cfrac {p} {n} \Big \rceil \times n & \text{if } p \not\equiv 0 \pmod {n} \end{cases}

以上 n 为分组的块大小。

斜体表示 SunJCE 支持,非斜体为 BouncyCastle 支持

NoPadding

不填充,在此填充下原始数据必须是分组大小的整数倍,非整数倍时无法使用该模式。比如采用 GCM 加密模式时,由于 GCM 加密模式不需要进行填充,因此需要使用该填充算法。

PKCS5Padding / PKCS7Padding

填充至符合块大小的整数倍,填充值为填充数量数

  • 原始:FF FF FF FF FF FF FF FF FF
  • 填充:FF FF FF FF FF FF FF FF FF 07 07 07 07 07 07 07

PKCS5Padding 的块大小应为 8 个字节,而 PKCS7Padding 的块大小可以在 1~255 的范围内。但 SunJCE 的 Provider 实现中 PKCS5Padding 也按 PKCS7Padding 来进行处理了。

ISO10126Padding

填充至符合块大小的整数倍,填充值最后一个字节为填充的数量数,其他字节随机处理

  • 原始:FF FF FF FF FF FF FF FF FF
  • 填充:FF FF FF FF FF FF FF FF FF 3F 7A B4 09 14 36 07

ISO7816-4Padding

填充至符合块大小的整数倍,填充值第一个字节为 0x80,其他字节填 0

  • 原始:FF FF FF FF FF FF FF FF FF
  • 填充:FF FF FF FF FF FF FF FF FF 80 00 00 00 00 00 00

ZeroBytePadding

填充至符合块大小的整数倍,填充值为 0

  • 原始:FF FF FF FF FF FF FF FF FF
  • 填充:FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00

X923Padding

填充至符合块大小的整数倍,填充值最后一个字节为填充的数量数,其他字节填 0

  • 原始:FF FF FF FF FF FF FF FF FF
  • 填充:FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 07

TBCPadding(Trailing-Bit-Compliment)

填充至符合块大小的整数倍,原文最后一位为“1”时填充 0x00,最后一位为“0”时填充“0xFF”

  • 原始:FF FF FF FF FF FF FF FF FF
  • 填充:FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00
  • 原始:FF FF FF FF FF FF FF FF F0
  • 填充:FF FF FF FF FF FF FF FF F0 FF FF FF FF FF FF FF

PKCS1Padding

该填充模式是 RSA 加密中使用的,即 PKCS#1 1.5 版本,详见 RFC 2313。RSA 加密时,需要将原文填充至密钥大小,填充的格式为:

00 + BT + PS + 00 + D

  • 00 为固定字节
  • BT 为处理模式。公钥操作时为 02,私钥操作为 0001
  • PS 为填充字节,填充数量为 k - 3 - Dk 表示密钥长度,D 表示原文长度。PS 的最小长度为 8 个字节。填充的值根据 BT 值不同而不同:
    • BT = 00 时,填充全 00
    • BT = 01 时,填充全 FF
    • BT = 02 时,随机填充,但不能为 00

OAEP

该填充模式是 RSA 加密中使用的,即 PKCS#1 2.2 版本,详见 RFC 8017。OAEP 填充算法较为复杂,在 Java 中使用 RSA 公钥加密推荐使用 RSA/ECB/OAEPWithSHA-256AndMGF1Padding 算法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容