AES 在线加解密实验室与多语言联调工具
支持 CBC / ECB / CTR / OFB / CFB 全部分组工作模式,PKCS7 / ZeroPadding / NoPadding 等多种填充,Base64 与 Hex 密文编码。内置 Java、Python、Node.js、Go 生产级联调代码即时生成,数据纯本地客户端计算绝不上报。
核心特性一览
- 分组模式全覆盖:支持 CBC、ECB、CTR、OFB、CFB 5 大主流工作模式。
- 标准填充支持:PKCS#7 (PKCS#5)、ZeroPadding、NoPadding、AnsiX923 等。
- 生产级联调代码一键生成:自动同步当前 Key 与 IV 生成 Java、Python、Node.js、Go 联调测试代码。
- 100% 浏览器客户端安全运算:无需网络请求,断网可用,密钥隐私零泄露。
常见问题解答 (FAQ)
Q: 为什么前后端联调 AES 经常出现解密失败?
A: 最常见原因有四点:1. 模式或填充不匹配(Java 默认 AES 实际为 AES/ECB/PKCS5Padding,而常见前端库默认 CBC);2. IV 缺失或长度不满足 16 字节;3. 密钥编码不一致(如 UTF-8 字符串与 Hex 16进制混淆);4. 输出编码不一致(Base64 与 Hex 字符大小写)。DevHub 提供了 Java、Python、Go 等多语言联调代码生成,复制即可对齐双方配置。
Q: PKCS#5 和 PKCS#7 填充有什么区别?
A: 本质上算法完全相同:PKCS#5 规范规定块大小固定为 8 字节(最初用于 DES);而 PKCS#7 允许块大小为 1 到 255 字节。由于 AES 的分组块固定为 16 字节(128位),严格来说 AES 使用的是 PKCS#7。在 Java 中由于历史原因写为 PKCS5Padding,实际在 AES 下就是 PKCS#7,二者完全通用。
Q: 为什么强烈不推荐在生产环境中使用 AES-ECB 模式?
A: ECB(电子密码本)模式将明文拆分为独立的 16 字节块各自加密,相同的明文块永远输出相同的密文块。攻击者即使不知道密钥,也可以通过分析密文重复模式窥探出原始图像轮廓或报文结构(如著名的 ECB 企鹅图),且极易遭受重放攻击与块重组攻击。推荐使用 CBC 或 CTR 模式。
Q: AES 的 128 位、192 位和 256 位密钥有什么差别?
A: 数字代表密钥长度:128 位需要 16 字节,192 位需要 24 字节,256 位需要 32 字节。加密轮数分别为 10、12、14 轮。在当代密码学中,AES-128 已足以抵御暴力破解;金融、政企与极高敏感级系统常规范要求采用 AES-256。密钥越长对 CPU 的算力消耗略有增加,但在现代支持硬件加速的 CPU 上性能差异极小。
Q: 在线使用 AES 工具会有密钥或明文泄露风险吗?
A: 传统服务端在线工具会把您的密钥和数据发送到远端服务器,存在日志记录和网络劫持泄露风险。DevHub 采用纯前端 WebAssembly 与 JavaScript 纯本地客户端运算,全程在当前浏览器内存执行,绝不向任何后端接口上传数据,断网亦可正常工作。