跳到主内容
UniKit

对称加密解密

用 WebCrypto 在浏览器本地做 AES-GCM / AES-CBC 256 位对称加解密,口令经 PBKDF2(SHA-256,可调迭代次数与盐长度)派生密钥,输出 base64 打包串 salt|iv|ciphertext,可直接粘贴回来解密。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

16 B
打包格式:base64(salt) | base64(iv) | base64(ciphertext),解密时把整串粘回去即可。

密文(base64 打包串)

这个工具能做什么

  • 手边只有浏览器、不方便装命令行工具时,用口令把一段文本(配置、密钥、临时笔记)加密成可复制的 base64 打包串。
  • 把加密结果发给自己或同事,对方把整串原样粘回来解密,口令通过另一个渠道单独传递。
  • 选算法时对照:AES-GCM 带完整性校验,密文被改动或口令不对会直接报错;AES-CBC 用于必须兼容老系统的场合。
  • 调整 PBKDF2 迭代次数,直观感受「口令派生密钥」慢在哪里、为什么迭代次数越高越难被暴力破解。

示例

输入

Hello, UniKit!(口令 hunter2,AES-GCM,PBKDF2 迭代 1000 次)

输出

AAECAwQFBgcICQoLDA0ODw==|AAECAwQFBgcICQoL|hzpq+MCEzRaF9ectXqUe3DcrUPdic3HFFX9bkY47

这是用固定盐(00…0f)和固定 IV(00…0b)复现的测试向量;界面上盐每次随机生成,所以同一段明文每次加密结果都不同,解密时把整串原样粘回去即可。

常见问题

AES-GCM 和 AES-CBC 该选哪个?

默认选 AES-GCM。它自带认证标签,密文被改动或口令不对时会直接报「解密失败」,不会返回一段乱码;AES-CBC 只负责加密,错误口令可能解出无意义的内容,只有必须和旧系统互通时才用。

解密时为什么还要选算法和迭代次数?

打包串里只存了盐、IV 和密文,没有存算法与迭代次数。IV 长度能提示算法(12 字节是 GCM、16 字节是 CBC),但迭代次数必须与加密时一致,否则派生出的密钥不同,解密一定失败。

口令强度重要吗?迭代次数是不是越高越好?

口令强度最重要:PBKDF2 只能让暴力破解变慢,补不了弱口令的短板。默认 210,000 次是常见推荐值,调到 500,000 次更难破解,但每次加解密都要等更久,手机上尤其明显。

IV 留空和手动填有什么区别?

留空最安全:每次加密都会生成新的随机 IV,同一段明文两次加密结果完全不同。手动填固定 IV 只适合复现测试向量,重复使用同一个 IV 会削弱安全性。

口令和明文会被上传吗?

不会。加解密全部通过浏览器内置的 WebCrypto 在本地完成,页面不发送任何网络请求,口令、明文和密文都不会离开这台设备。

关键词:aesaes-gcmaes-cbcencryptdecrypt加密解密pbkdf2webcrypto对称加密

同类工具