aes-encryption.com
简体中文

AES · GCM / CBC / CTR

AES-GCM、CBC 与 CTR:认证和参数区别

对比 GCM 认证、CBC 填充及 CTR 计数规则,正确配置原始 AES 兼容参数。

比较完整构造

模式本工具 IV / nonce填充认证
GCM12 字节 nonce无128 位 tag
CBC16 字节 IVPKCS7无
CTR16 字节计数器,低 64 位计数无无

密码模式固定使用 GCM。CBC 与 CTR 仅作原始密钥兼容,并显示警告;这不是让你用裸模式替换已有安全协议。

GCM 为什么可能拒绝解密

GCM 验证密文和 AAD 的 tag。密钥、nonce、密文、tag 或 AAD 任一变化都可能认证失败,此时不返回部分明文。工具输出末尾带 16 字节 tag;目标系统分离存储时,要正确拆分或合并,不能重复追加。

同一密钥不可复用 nonce。工具默认每次生成新值,手动输入只适合明确的互操作或标准向量实验;不要把一次随机值复制成永久默认 IV。

CBC、CTR 的失败含义不同

CBC 需要不可预测 IV 和一致的填充方式。错误密钥可能触发填充失败,但偶然通过填充不等于通过认证。CTR 没有填充,用错误密钥也可能直接返回字节,不能证明内容完整。

CTR 还需匹配计数器推进方式。本工具固定低 64 位计数,并在输入导致溢出前拒绝操作。对方即使给出同样 16 字节初值,若计数字段布局不同,仍可能无法互操作。

兼容前逐项记录

记录模式、密钥字节、IV/nonce、编码、tag 位置、AAD,以及填充或计数长度,先使用公开数据测试。本版不提供 ECB、CFB、OFB。新任务应使用有认证的密码 GCM 或经过审查的应用协议,不要自行设计 CBC 加校验码方案。

相关工具与阅读

技术参考

更新于 2026 年 10 月 16 日

常见问题

CBC 没有 tag 就一定是算法坏了吗?

CBC 是有使用前提的模式。裸 CBC 不认证数据,完整协议可能另加合适的完整性保护;本工具不会自动添加这些保护。

GCM 能用 PKCS7 吗?

GCM 不使用 PKCS7。额外添加或去掉填充会改变明文,可能破坏兼容性。