反馈

AES加密解密

加解密双方需一致:密钥(及编码)、模式、填充、IV、密文格式。这里密钥是原始字节(不做 KDF)——如果你的密钥是一句口令,请用 文字加解密(OpenSSL 兼容口令派生)。
浏览器本地运算,不上传。相关: 文字加解密 · 3DES · RSA · Base64 · HMAC

📖 工具说明

1. 这个工具

用来做能和后端代码互通的 AES 加解密:你自己控制原始密钥字节、模式、填充、IV 和密文格式,工具不做任何密钥派生。

如果你手里是一句"口令"而不是固定长度的密钥字节,请用 文字加解密(那边按 OpenSSL 传统方式从口令派生密钥)。

2. 参数

参数 说明
密钥 原始字节。按「密钥编码」把输入解释成字节:UTF-8(1 字符≈1 字节,中文 3 字节)、Hex、Base64。字节数必须是 16 / 24 / 32,分别对应 AES-128 / 192 / 256。
模式 CBC(最常用)、CTR、CFB、OFB、ECB。ECB 不安全(相同明文块→相同密文块),只用于极短随机数据。
填充 PKCS7(=PKCS5,最通用)、Zero、None。流式模式(CTR/CFB/OFB)通常配 None;块模式配 PKCS7。None 时明文长度必须是 16 的倍数。
IV 16 字节,除 ECB 外都需要。加密时留空会随机生成并显示(务必连同密文一起交给解密方)。同样按「IV 编码」解释。
密文格式 加密输出 / 解密输入的密文按 Base64 或 Hex。

结果下方会回显实际用到的 AES-位数 / 模式 / 填充 / IV,方便和另一端对照。

3. 与后端对接的要点

对应各语言:Java Cipher.getInstance("AES/CBC/PKCS5Padding")、Python cryptography 的 Cipher(algorithms.AES(key), modes.CBC(iv))、Go crypto/aes + crypto/cipher、PHP openssl_encrypt($d,"aes-256-cbc",$key,OPENSSL_RAW_DATA,$iv)。

4. 常见问题(FAQ)

Q:解密结果为空? A:密钥、密钥编码、模式、填充、IV、密文格式,六项里有一项不一致就会失败或得到乱码/空。逐项核对。

Q:为什么别的工具解不开我这里的密文? A:多半是对方在做口令派生(U2FsdGVkX1… 那种)或加了 IV 前缀。本工具是纯密文 + 独立 IV。

Q:AES-128 够吗? A:够。目前没有对 AES-128 的实用攻击,民用商用足够。256 位余量更大、开销略高。

Q:数据会上传吗? A:不会,用浏览器里的 CryptoJS 本地计算。


AES 的结构与数学原理详见:AES 深度解析。相关:文字加解密 · 3DES · RSA · HMAC。

📖 了解原理

📖 相关推荐