功能说明
AES(高级加密标准)是几乎无处不在的对称加密算法:HTTPS、磁盘加密、密码管理器和聊天软件都在用。加密和解密使用同一个密钥。本工具把文本加密成可以随处粘贴的 Base64,也能再解密回来。
密钥可以是:
- 口令:通过 PBKDF2-HMAC-SHA256 加随机盐值派生出 128 位或 256 位密钥;
- 十六进制密钥:32 或 64 个十六进制字符(128 或 256 位),直接使用。点击随机密钥可以生成一个。
提供两种工作模式:AES-GCM 是现代默认选择,能检测篡改;AES-CBC(PKCS#7 填充)用于兼容旧系统。
使用方法
- 选择加密或解密、算法和密钥类型。
- 在输入框顶部输入口令或粘贴十六进制密钥。
- 粘贴文本(或要解密的 Base64),结果显示在右侧;点击作为输入可切换方向,验证能否还原。
输出格式
输出是一整段 Base64,方便通过邮件和聊天传递:
passphrase: salt (16 bytes) | IV (12 GCM / 16 CBC) | ciphertext (+ 16-byte tag for GCM)
hex key: IV (12 GCM / 16 CBC) | ciphertext (+ 16-byte tag for GCM)
解密时要使用与加密时相同的算法、密钥类型、密钥长度和迭代次数。这些设置保存在页面地址里,分享链接会带上它们,而密钥只留在你手里。
如何选口令
PBKDF2 让每次猜测变慢,但救不了又短又常见的口令。请使用较长的随机口令(比如用密码生成器生成),并通过与密文不同的渠道分享。迭代次数越多越难猜,解密也稍慢;常见取值是 10 万到 60 万次。
常见问题
› 选 GCM 还是 CBC?
除非别的系统要求 CBC,否则选 GCM。GCM 带认证,密钥错误或改动了一个字节都会被检测出来,而不是输出乱码。CBC 只保证机密性,主要用于兼容旧代码。
› 为什么每次加密的结果都不一样?
每次加密都使用新的随机 IV,用口令时还会生成新的随机盐值。两者都保存在输出开头,所以照样能解密。同一密钥重复使用 IV(尤其是 GCM)是严重的安全问题。
› 如何在自己的代码里解密?
先解码 Base64。用口令时,前 16 字节是 PBKDF2 盐值,接着是 IV(GCM 12 字节,CBC 16 字节),然后是密文;用相同迭代次数的 PBKDF2-HMAC-SHA256 派生密钥。用十六进制密钥时没有盐值。GCM 的最后 16 字节是认证标签。
› 口令或密钥会被保存或发送出去吗?
不会。加密在浏览器中通过 Web Crypto API 完成,口令或密钥只保存在当前页面的内存里,不会存储、不会写进地址栏,也不会包含在分享链接里,所以你可以分享密文而不泄露密钥。