填充属于模式的消息处理规则
AES 分组大小为 16 字节。CBC 需要完整分组,本工具采用 PKCS7;GCM 与 CTR 不需要 PKCS7 就能处理最后的不完整分组。不要因为其他库的界面有填充选项,就在所有模式上增加填充。
密码模式固定 GCM,没有 PKCS7。原始 CBC 明确使用 PKCS7;目标如果使用零填充或不填充,并不会自动与本工具兼容。
字节级例子
13 字节消息的 PKCS7 会追加三个值为 03 的字节,形成 16 字节分组。如果原文已正好 16 字节,则追加整组十六个十六进制 10 字节值,使去除填充有明确定义。
原始 CBC 输入 abc 为三个 UTF-8 字节,会在加密前自动追加十三个 0d。正确解密并移除 PKCS7 后恢复原来的三个字节。不要在编辑器里手动再加一遍填充。
报错能说明什么
错误密钥、IV、模式、密文变化和不同填充约定都可能报错;错误不会指出唯一原因。错误密钥得到的随机字节也偶尔可能碰巧符合填充,所以移除成功不等于明文通过认证。
GCM 的失败是认证不匹配,不释放明文。不要把损坏的 GCM 包切换到 CBC 来绕过保护。CTR 没有填充校验,可能直接返回字节,同样不能证明完整性。
不要靠删改原文排错
确认密文解码正确、CBC IV 为 16 字节、密钥长度与选项一致,并保留原消息所需的尾部换行。如果对方使用另一填充约定,应使用对应实现,不要自行删零或猜测该丢弃多少明文。
相关工具与阅读
技术参考
更新于 2026 年 10 月 16 日