AES 是目前最常用的对称加密算法,对接接口、调试加密配置时经常需要手动验证一段密文。本站提供两个 AES 工具:
- AES 加密解密(标准模式):可指定密钥位数、CBC/ECB 模式、IV 和编码格式,适合与 Java、Python、Go、Node.js 等程序对接;
- AES 口令加密:只需输入一个口令,适合快速加密一段文字(与 CryptoJS 兼容)。
两个工具都在浏览器中运行,原文和密钥不会发送到服务器。
一、标准 AES 工具的参数
- Key Size:128 / 192 / 256,决定 Key 必须是多少字节
- 加密模式:CBC 或 ECB,CBC 需要 IV,ECB 不需要
- Key:文本,按 UTF-8 计算字节长度
- iv:文本,仅在 CBC 模式下显示
- 编码格式:hex / base64 / utf8,加密时指密文的输出格式,解密时指密文的输入格式
填充方式为 PKCS#7(在 Java 中常写作 PKCS5Padding,二者对 AES 等价)。
Key 长度要求
Key 的 UTF-8 字节数必须恰好等于:
- AES-128:16 字节(如 16 个英文字母或数字)
- AES-192:24 字节
- AES-256:32 字节
注意,一个中文字符在 UTF-8 中占 3 个字节。长度不符时,工具会提示所需字节数,不会自动补齐或截断——这样可以避免“看起来能加密、其他程序却解不开”的情况。
IV 要求
CBC 模式下,IV 必须是 16 个 UTF-8 字节;
如果 IV 留空,工具使用 16 个零字节作为 IV。
使用步骤
- 在“原始内容”中输入明文(解密时输入密文)。
- 填写 Key,选择 Key Size,使二者长度匹配。
- 选择加密模式;CBC 模式填写 iv。
- 选择编码格式,通常为 base64 或 hex。
- 点击“加密”或“解密”,结果可一键复制。
二、CBC 和 ECB 怎么选
- ECB:每个数据块独立加密。相同明文块会得到相同密文块,容易暴露数据规律,不推荐用于新系统,只在对接遗留系统时使用。
- CBC:每块加密前与上一块密文混合,需要 IV。相同明文配合不同的 IV 会得到不同密文,安全性好于 ECB。实际使用中应为每条消息生成随机 IV,并与密文一同传输。
三、hex 和 base64 有什么区别
两者都是把二进制密文转成可显示字符的方式:
- hex:每字节 2 个字符,只含 0-9、a-f,长度较长;
- base64:长度约为 hex 的 2/3,常用于 JSON、HTTP 传输。
“转换为大写”按钮适用于 hex 结果。base64 区分大小写,转换后会变成另一段数据,无法解密。 utf8 选项一般不用于密文,因为密文是任意二进制,直接按文本显示会出现乱码且无法还原。
四、和程序结果对不上?逐项排查
- 模式一致吗? CBC 与 ECB 的结果完全不同。
- Key 位数一致吗? 同一个 Key 不会同时适用于 AES-128 和 AES-256。
- IV 一致吗? 对方是否使用了零 IV、随机 IV,或把 IV 拼在密文前面?
- 填充一致吗? 对方若使用 NoPadding 或 ZeroPadding,需要相应调整。
- 编码一致吗? 密文是 base64 还是 hex,Key 是不是本身就是 hex/base64 字符串(本工具把 Key 当作 UTF-8 文本)。
- 明文有没有多余空格、换行?
五、口令加密工具(aes-with-key)
AES 口令加密只需要原文和一个任意长度的 Key(口令),点击“加密”即可得到 Base64 密文。它的特点是:
- 口令长度不限,工具会根据口令和随机盐自动派生出真正的密钥与 IV;
- 同一原文、同一口令,每次加密结果都不同(因为盐是随机的),但都能正常解密;
密文通常以 U2FsdGVkX1 开头,这是 OpenSSL / CryptoJS 口令加密格式的标志;
- 与前端 CryptoJS 的
CryptoJS.AES.encrypt(文本, 口令) 兼容。
适合临时加密一段备忘、在两端都使用 CryptoJS 的项目中调试。若要与后端标准 AES 实现对接,请使用标准模式工具。
安全提醒
- 在线工具适合调试和学习。生产环境的密钥请妥善保管,不要粘贴到不可信的网站;
- 本站工具在浏览器本地运行,但也建议调试时使用测试密钥;
- 新系统优先考虑 AES-GCM 等带认证的模式,并由成熟的加密库生成随机 Key 和 IV。
相关工具