⭐ 觉得好用?收藏备用,下次直接打开 ✨ 开通会员去广告 · 更多权益即将开放 ☕ 支持作者
🔒
密钥与明文只在本机浏览器内计算,不上传、不联网、不留存,页面也不会把密钥写进本地存储。请勿在此粘贴生产环境的真实密钥;本工具用于学习、联调与对拍,任何因在公共设备输入密钥导致的泄露,本工具不承担责任。
0 字节
0 字节

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、密文都是二进制数据,输入框里只能用某种编码来表示:

  • UTF-8 —— 密钥本身是一句可读字符串,如 mySecretKey12345,按字符逐个转成字节
  • Hex —— 每 2 个十六进制字符表示 1 字节,0123…3210 共 32 个字符正好 16 字节
  • Base64 —— 每 4 个字符表示 3 字节,密文传输时最常用

同一串字符按不同编码解析出的字节数完全不同,这是”密钥长度不对”和”密文对不上”最常见的根因。工具会实时显示当前编码下的实际字节数。

不适合用它做的事

  • 不要加密大文件 —— 页面处理的是文本,大量数据请在服务端做
  • 不要用口令直接当密钥 —— 先经 PBKDF2 / scrypt 派生,别截断或补零
  • 不要在密文之外省掉 IV —— IV 不保密,但必须随密文一起传给对方
  • 不要用 ECB 保护真实数据 —— 它只适合对拍遗留接口

⚠️ 安全提醒:本页所有计算都在你的浏览器本地完成,不上传、不联网、不留存,密钥也不会写入本地存储。但请勿在此输入生产环境的真实密钥——工具不上传,不代表你所在的设备与网络环境是可信的。

📍使用场景

  • 和对接方对拍密文接口联调时对方给的密文自己解不开,把双方的密钥、IV、模式、填充逐项摆进来跑一遍,几秒就能定位到底哪一项不一致。
  • 排查线上加密故障日志里捞出一段密文,用同一把密钥当场解开看内容,确认是加密写错了还是解密读错了,不用另起一个本地工程。
  • 学习分组密码怎么工作换模式、换填充、改一个字节的 IV,立刻看到密文怎么变,比读文档更快建立起 ECB 为什么不安全的直觉。
  • 生成合规的密钥与 IV按算法自动生成正确长度的随机密钥和 IV,避免手搓字符串凑长度导致密钥强度不足。

常见问题

为什么我和对方的密文对不上?

按这个顺序查:① 密钥编码 —— 同一串 0123456789abcdef 按 UTF-8 是 16 字节、按 Hex 是 8 字节,这是最高频的坑;② 模式与 IV —— CBC 换个 IV 密文就完全不同,ECB 则根本不用 IV;③ 填充 —— PKCS7 和零填充对不齐;④ 输出编码 —— Base64 和 Hex 是同一份数据的两种写法,别当成算错了。

ECB 和 CBC 该选哪个?

能选 CBC 就别用 ECB。ECB 把明文按 16 字节切块后各块独立加密,相同的明文块会得到完全相同的密文块,图片加密后轮廓都还看得见。CBC 引入 IV 并让每块与前一块异或,相同明文得到不同密文。ECB 在本工具保留,只是因为大量国内老接口还在用,对拍时绕不开。

GCM 模式的 Tag 是什么,能不填吗?

不能。 GCM 除了加密还会算一个 16 字节认证标签(Tag),解密时会拿它验证密文有没有被人改过——校验不过就直接拒绝解密,而不是吐出一段乱码。所以 GCM 的密文必须连同 Tag 一起传给对方;AAD(附加认证数据)参与认证但不加密,两端也必须一致。

密钥必须多长?可以随便写一串吗?

AES 只接受 16 / 24 / 32 字节(即 AES-128 / 192 / 256),DES 固定 8 字节,3DES 固定 24 字节。长度不对不是"自动补齐"而是直接报错。如果你手上是一句口令而不是定长密钥,正确做法是先用 PBKDF2、scrypt 这类密钥派生函数生成定长密钥,而不是随手截断或补零。

零填充和 PKCS7 有什么区别?

PKCS7 补的字节值等于补的个数(补 5 个就补 5 个 0x05),解密时能精确知道去掉几个,明文已经对齐时还会额外补满一整块。零填充补 0x00,解密时只能把末尾的 0 全部剥掉——所以如果明文本身就以 0x00 结尾,这些字节会被一起吃掉。新写代码一律用 PKCS7。

在这里加密安全吗?数据会上传吗?

不会上传。 算法用纯 JavaScript 在你的浏览器里跑完,页面没有任何网络请求,密钥也不会写进浏览器本地存储(只记住算法、模式这些选项)。但仍请不要粘贴生产环境的真实密钥:公共电脑的剪贴板、浏览器扩展、屏幕录制都可能造成泄露,工具本身不上传不等于所处环境安全。