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 05Pads 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