AES 加密解密 - GCM、CBC、CTR 在线加解密
支持 AES-128、192、256 与 GCM、CBC、CTR、CFB、ECB 五种模式,可自定义密钥与 IV,密文支持 Base64 与十六进制
The tool itself switches to English, but this long-form guide is currently written in Chinese only.
AES 加密解密 - GCM、CBC、CTR 在线加解密是什么
AES 是对称加密里最常用的一套算法,接口签名、配置文件加密、本地数据存储几乎都用它。这个工具支持 128、192、256 三种密钥长度与 GCM、CBC、CTR、CFB、ECB 五种模式,密钥与 IV 都可以按十六进制或普通文本填写,密文可以输出 Base64 或十六进制。所有计算在浏览器本地完成,密钥不会发到任何服务器。
所有计算都在你的浏览器本地完成,输入的内容不会上传到服务器。
怎么用AES 加密解密 - GCM、CBC、CTR 在线加解密
- 先选模式。没有特殊理由就选 GCM:它带认证,密文被改一个字节就会解密失败,而不是解出一堆乱码
- 选密钥长度并填入对应字节数的密钥。点「随机生成」可以得到一个密码学安全的密钥,比自己敲一串字母可靠得多
- 填 IV 或 Nonce。GCM 的 Nonce 是 12 字节,其它模式是 16 字节,换模式时会自动调整长度
- 输入明文点加密,或切到解密粘贴密文。解出来的如果不是合法文本,会标出「解出的是二进制」而不是显示一堆乱码
示例
输入
AES-128-GCM,明文「在线工具箱 AES 加密示例」输出
Base64 密文(末尾 16 字节是认证标签)Nonce 12 字节,密钥 16 字节
常见问题
密钥长度选多少合适?
新系统一律选 256 位。128 位在今天仍然安全,但 256 位没有明显性能代价;192 位在实际项目里很少见,主要是历史遗留。
为什么我的密文和别的工具不一样?
先比三件事:模式、填充方式、IV。同一段明文用 CBC 加密,IV 不同结果就完全不同(这是设计如此)。如果对方给的是 GCM 密文,末尾还带着 16 字节认证标签,长度会比 CBC 多一截。
这个工具能直接用于生产吗?
算法实现可以,但使用方式要自己把控:密钥不能硬编码在前端代码里,IV 每次加密都应该重新随机生成并与密文一起存储。真正上线建议在服务端用成熟库做,这里更适合调试与验证。
小提示
- GCM 与 CBC 的密文互不兼容:拿 GCM 的密文去 CBC 解密一定失败,反之亦然。跨系统对接时先确认对方用的模式,这是最常见的对不上原因
- ECB 不要用于真实数据。它对每个 16 字节块独立加密,相同的明文块会产生相同的密文块,加密一张图片后仍能看出轮廓
- IV 不需要保密,但绝不能重复使用。同一个密钥配同一个 IV 加密两次不同内容,攻击者能通过对比推出明文关系
- 本工具只做了五种模式,没有 OFB:底层加密库没有提供这个模式的实现,与其在下拉里放一个选了就报错的选项,不如不提供