跳到主内容

🔐 AES 加密 / 解密

免费在线AES加密解密工具,支持CBC/ECB/CFB/OFB/CTR/GCM模式与128/192/256位密钥,PKCS7/NoPadding等多种填充。兼容Java Cipher和Python Crypto.Cipher,密钥不足时按UTF-8字节直接使用。

说明:加解密均在浏览器本地执行(基于 CryptoJS),数据不上传。
兼容提示:与 Java Cipher.getInstance("AES/CBC/PKCS5Padding")、 Python Crypto.Cipher.AES 标准实现兼容;密钥不足时按 UTF-8 字节直接使用,不做 PBKDF 派生。
🧭 已探索 - / 2382 个工具 🎲 随机试一个
📌 工具速览

免费在线AES加密解密工具,支持CBC/ECB/CFB/OFB/CTR/GCM模式与128/192/256位密钥,PKCS7/NoPadding等多种填充。兼容Java Cipher和Python Crypto.Cipher,密钥不足时按UTF-8字节直接使用。

🔐 CBC / GCM / Padding 参数与密文示例

后端调试接口加密、前端做敏感字段加密,或是在 Java、Python 之间对齐加解密参数时,最常见的坑就是模式和填充对不上,导致解出来是一堆乱码。这个工具支持 CBC/ECB/CFB/OFB/CTR/GCM 六种模式和 128/192/256 三种密钥长度,PKCS7/NoPadding 等填充,密钥不够长时按 UTF-8 字节直接使用,兼容 Java Cipher 和 Python Crypto.Cipher。所有加解密都在浏览器本地用 CryptoJS 完成,密钥和明文不上传。

  • 明文 hello world + 密钥 1234567890abcdef(128 位)+ CBC/PKCS7 → ZglJO6WWY3kEBifZmUm6VA==(Base64)
  • 同上参数,十六进制输出 → 6609493ba5966379040627d99949ba54
  • 一键随机密钥:256 位 hex 示例 5f2c8a10b7d4e6059f1a2b3c4d5e6f708a9b0c1d2e3f405162738495a6b7c8d
  • 解密还原:ZglJO6WWY3kEBifZmUm6VA== → hello world
  • 参数面板:模式=CBC,密钥长度=128,填充=PKCS7,IV=0000000000000000
  • GCM 模式额外输出认证标签(tag),用于检测密文是否被篡改
👤 后端 / 前端开发、测试、需要对齐加解密参数的工程师

📘 使用说明

  1. 输入明文或密文、密钥、模式、密钥长度、填充
  2. 点击"加密"或"解密"
  3. 一键复制结果;可点"生成随机密钥"创建安全密钥

❓ 常见问题

Q: 与 Java Cipher 兼容吗?
A: 兼容。PKCS7 等价 Java 的 PKCS5Padding;CBC 模式指定相同 IV 与 Key 可互通解密。
Q: 密钥会不会泄露?
A: 不会。所有加密解密都在浏览器本地完成(基于 CryptoJS),密钥与数据不离开你的电脑。
Q: 支持其它对称算法吗?
A: 目前仅 AES;DES / 3DES / SM4 可按需加入。
Q: CBC 和 GCM 模式该怎么选?
A: CBC 需要手动指定 IV、不校验完整性;GCM 自带认证标签,能同时保证机密性和完整性,防止密文被篡改,是现代场景的推荐首选。
Q: ECB 模式安全吗?
A: 不安全。ECB 对相同明文块生成相同密文块,会暴露数据模式,网上那张「企鹅图片轮廓泄露」就是 ECB 的典型问题,建议优先用 CBC 或 GCM。
Q: 密钥长度 128/192/256 有什么区别?
A: 分别对应密钥字节数 16/24/32。越长越难暴力破解,但计算略慢。日常 128 位已足够,高敏感数据建议 256 位。密钥字符串不够长时工具按 UTF-8 字节直接使用。
Q: PKCS7 填充和 NoPadding 什么时候用?
A: 明文长度不是块大小(16 字节)整数倍时必须填充,PKCS7 最常用;NoPadding 要求明文长度正好是 16 的整数倍,否则会报错。
Q: CBC 模式的 IV(偏移量)是干什么的?
A: IV 是初始化向量,让相同明文在每次加密时产生不同密文。解密时必须用加密时的同一个 IV,否则第一块会解错。
Q: 解密结果是乱码怎么办?
A: 九成是参数不一致:密钥、模式、IV、填充、输出编码(Base64/Hex)任何一项对不上都会乱码,逐一核对两边配置即可。
Q: 为什么相同明文每次加密结果不一样?
A: CBC/GCM 模式使用了随机 IV,所以每次密文不同,这是正常且更安全的表现;只有 ECB 模式才固定不变。
Q: 输出结果是 Base64 还是十六进制?
A: 可以选。默认输出 Base64(密文末尾常带 =),也可切换成十六进制。Java 后端常用 Hex 对接,前端 JS 用 Base64 更方便。

👀 大家还在看

JSON格式化 AI对话 二维码生成 PDF压缩 个税计算 Base64编码 时间戳转换 今日运势 纪念日计算 复利计算 求职工具箱 全部工具 →
👉 下一步 🏆 看看周榜热门 🧩 工作流中心 🔍 全部工具分类

📅 内容更新于 · 📚 收录 2382+ 在线工具 · 🤖 适配 AI 搜索引用(豆包/DeepSeek/Kimi/文心/ChatGPT)

AES加密解密常见问题

AES是什么? → AES(Advanced Encryption Standard)是美国国家标准技术研究所(NIST)发布的对称加密算法,取代了原来的DES。AES支持128位、192位、256位三种密钥长度,安全性高于DES。

AES-CBC和AES-ECB有什么区别? → CBC(Cipher Block Chaining)模式每个数据块加密前先与前一个密文块异或,更安全。ECB(Electronic Codebook)模式每个块独立加密,相同明文产生相同密文,不适合加密有模式的数据。推荐使用CBC模式。

AES-GCM是什么? → GCM(Galois/Counter Mode)是一种认证加密模式,同时提供加密和完整性校验。AES-GCM是目前最推荐的AEAD方案,广泛用于TLS、JWT等场景。

PKCS5Padding和PKCS7Padding有什么区别? → PKCS5是PKCS7的子集,PKCS5固定8字节块,PKCS7可变块大小。AES块大小为16字节,用PKCS7更准确,但Java中PKCS5Padding和PKCS7Padding实际等价。

AES-128和AES-256安全性差多少? → AES-128密钥空间2^128,AES-256密钥空间2^256。理论上AES-256更安全,但AES-128已足够安全,且速度更快。大部分场景AES-128够用。

密钥怎么生成? → 点击"生成随机密钥"按钮,使用浏览器Web Crypto API生成加密安全随机数。也可以用openssl命令:openssl rand -hex 16(128位)或openssl rand -hex 32(256位)。

数据安全吗? → 所有加密解密都在浏览器本地完成(Web Crypto API),密钥和明文不会上传到服务器。适合加密敏感数据。