跳到主要内容
uencoder

Padding

填充是将明文长度补齐到分组边界的机制,常见方案有 PKCS#7、零填充与 ISO 10126,AEAD 模式无需填充。

用途

使分组密码能处理长度非分组整数倍的明文。

机制

填充在明文末尾追加字节使总长度为分组大小整数倍。解密时去除填充。PKCS#7 追加 n 个值为 n 的字节(可逆且自校验)。零填充简单但无法区分填充与数据。流模式(CTR)与 AEAD(GCM)无需填充。

用例

  • AES-CBC/PKCS#7 填充
  • RSA OAEP 填充
  • 遗留零填充方案
  • 教学示例

示例

  • 输入
    3 bytes + PKCS#7 (block=8)
    输出
    appends 05 05 05 05 05

    Pads with five 0x05 bytes

常见错误

Zero padding cannot distinguish trailing data zeros from padding
Use a self-describing scheme such as PKCS#7
Padding errors fall to Padding Oracle attacks
Use AEAD or constant-time validation

相关词条

相关工具

参考链接