�,
复制它再拿去加密不会得到原数据——请用下面的原始字节。
AES 加解密在浏览器本地完成对称加密与解密,覆盖 AES-128/192/256 以及仍在大量老接口里服役的 DES、3DES。支持 ECB、CBC、CFB、OFB、CTR、GCM 六种模式,PKCS7 / 零填充 / 不填充三种填充,密钥与 IV 可按 UTF-8、Hex、Base64 三种编码输入——接口联调时对不上密文,九成问题就出在这几项的组合里。
| 概念 | 一句话 |
|---|---|
| 密钥 Key | 加解密双方共享的秘密,长度固定,错一位就解不开 |
| 偏移量 IV | 让相同明文每次加密出不同密文,不保密但两端必须一致 |
| 模式 | 多个分组之间怎么串起来,决定安全性与是否需要 IV |
| 填充 | 明文凑不满整块时怎么补齐,两端必须约定一致 |
| 模式 | 需要 IV | 特点 |
|---|---|---|
| GCM | 需要(推荐 12 字节) | 加密 + 完整性认证,新项目首选 |
| CBC | 需要(等于分组长度) | 最通用,绝大多数国内接口在用 |
| CTR | 需要 | 把分组密码当流密码用,可并行、无需填充 |
| CFB / OFB | 需要 | 流式,较少见,多为兼容老系统 |
| ECB | 不需要 | 相同明文出相同密文,不要用于新项目 |
DES 与 3DES 在本工具只提供 ECB 和 CBC——它们的分组只有 8 字节,且 DES 的 56 位有效密钥今天已可被暴力破解,除对接遗留系统外不应再使用。
密钥、IV、密文都是二进制数据,输入框里只能用某种编码来表示:
mySecretKey12345,按字符逐个转成字节0123…3210 共 32 个字符正好 16 字节同一串字符按不同编码解析出的字节数完全不同,这是”密钥长度不对”和”密文对不上”最常见的根因。工具会实时显示当前编码下的实际字节数。
⚠️ 安全提醒:本页所有计算都在你的浏览器本地完成,不上传、不联网、不留存,密钥也不会写入本地存储。但请勿在此输入生产环境的真实密钥——工具不上传,不代表你所在的设备与网络环境是可信的。
按这个顺序查:① 密钥编码 —— 同一串 0123456789abcdef 按 UTF-8 是 16 字节、按 Hex 是 8 字节,这是最高频的坑;② 模式与 IV —— CBC 换个 IV 密文就完全不同,ECB 则根本不用 IV;③ 填充 —— PKCS7 和零填充对不齐;④ 输出编码 —— Base64 和 Hex 是同一份数据的两种写法,别当成算错了。
能选 CBC 就别用 ECB。ECB 把明文按 16 字节切块后各块独立加密,相同的明文块会得到完全相同的密文块,图片加密后轮廓都还看得见。CBC 引入 IV 并让每块与前一块异或,相同明文得到不同密文。ECB 在本工具保留,只是因为大量国内老接口还在用,对拍时绕不开。
不能。 GCM 除了加密还会算一个 16 字节认证标签(Tag),解密时会拿它验证密文有没有被人改过——校验不过就直接拒绝解密,而不是吐出一段乱码。所以 GCM 的密文必须连同 Tag 一起传给对方;AAD(附加认证数据)参与认证但不加密,两端也必须一致。
AES 只接受 16 / 24 / 32 字节(即 AES-128 / 192 / 256),DES 固定 8 字节,3DES 固定 24 字节。长度不对不是"自动补齐"而是直接报错。如果你手上是一句口令而不是定长密钥,正确做法是先用 PBKDF2、scrypt 这类密钥派生函数生成定长密钥,而不是随手截断或补零。
PKCS7 补的字节值等于补的个数(补 5 个就补 5 个 0x05),解密时能精确知道去掉几个,明文已经对齐时还会额外补满一整块。零填充补 0x00,解密时只能把末尾的 0 全部剥掉——所以如果明文本身就以 0x00 结尾,这些字节会被一起吃掉。新写代码一律用 PKCS7。
不会上传。 算法用纯 JavaScript 在你的浏览器里跑完,页面没有任何网络请求,密钥也不会写进浏览器本地存储(只记住算法、模式这些选项)。但仍请不要粘贴生产环境的真实密钥:公共电脑的剪贴板、浏览器扩展、屏幕录制都可能造成泄露,工具本身不上传不等于所处环境安全。