文本加密 / 解密
使用 AES-256-GCM 直接在浏览器中加密或解密文本。数据不会离开您的设备。
文本加密 / 解密
输入文本和密码后,点击“加密”或“解密”。
OpenSSL 命令参考(AES-256-CBC)
您也可以使用 OpenSSL 在命令行中加密和解密文本。以下命令使用 AES-256-CBC,并通过 PBKDF2 派生密钥(100,000 次迭代,SHA-256)。
请将 待加密文本 替换为要加密的文本,将 你的密码 替换为您设置的密码。解密时,请将 密文Base64 替换为加密命令输出的 Base64 字符串。
加密
printf '%s' '待加密文本' | openssl enc -aes-256-cbc -pbkdf2 -iter 100000 -pass pass:'你的密码' -a
解密
echo '密文Base64' | openssl enc -d -aes-256-cbc -pbkdf2 -iter 100000 -pass pass:'你的密码' -a
为什么结果不同?
上方网页工具使用 AES-256-GCM(认证加密),而 OpenSSL 命令使用 AES-256-CBC,因为 openssl enc 不支持 GCM 模式。这两种算法生成的输出格式完全不同,因此无法用本网页工具解密 OpenSSL 输出的结果,反之亦然。不过,两种方式都使用相同参数的 PBKDF2 来派生加密密钥(SHA-256、100,000 次迭代)。
如何使用此工具
在“明文”字段中输入或粘贴要保护的文本,选择一个强密码,然后点击“加密”。工具会返回一个 Base64 编码字符串,其中将解密所需的全部内容打包在一起,包括盐值、IV、认证标签和密文。
如需还原内容,请切换到“解密”模式,粘贴 Base64 字符串,输入同一密码,然后点击“解密”。如果密码正确且数据未被篡改,原始明文会立即显示。
AES-256-GCM 有多强?
只要密码没有丢失,几乎不可能在不知道密码的情况下恢复明文,即使使用非常强大的计算机也是如此。AES-256 的密钥空间为 ,这意味着暴力穷举远远超出当前和可预见技术的能力范围。再加上 PBKDF2 密钥拉伸(100 000 次迭代),随意猜密码同样并不现实。
但需要注意的是,弱密码或重复使用的密码会大大削弱这种优势。请始终使用强且唯一的密码短语。
什么是对称加密?
对称加密在加密和解密时使用同一把密钥(由您的密码派生而来)。与需要公钥/私钥对的非对称加密不同,对称方案简单且高效,因此非常适合在双方共享秘密时保护静态数据或传输中的数据。
为什么使用 AES-256-GCM?
- 认证加密:GCM(Galois/Counter Mode,伽罗瓦/计数器模式)在一次操作中同时提供机密性和完整性。哪怕密文只改动 1 个比特,解密也会因为认证失败而直接报错,而不会输出乱码。
- 广泛可信:AES-256 是政府、金融机构和全球安全关键软件广泛采用的加密标准。
- 行业标准:它是 TLS 1.3 的默认密码套件之一,受到 NIST 推荐,并通过 Web Crypto API 得到各大平台的原生支持。
因为这个工具只使用一种固定算法,所以您无需担心加密端和解密端的算法不匹配。
加密 / 解密过程如何工作
- 密钥派生(PBKDF2) — 您的密码不会直接作为加密密钥使用。系统会把它与一个随机生成的 16 字节盐值一起输入 PBKDF2,并执行 100 000 次 SHA-256 迭代。输出结果是一个 256 位密钥,仅凭密码本身几乎无法逆向推导。
- 加密 — 系统会生成一个随机的 12 字节 IV(初始化向量)。随后,AES-256-GCM 使用派生出的密钥和 IV 对明文进行加密,生成密文以及一个会在解密时校验的 16 字节认证标签。
- 打包 — 盐值、IV、认证标签和密文会按顺序拼接,再编码为一个 Base64 字符串。这意味着接收方只需要密码,其他内容都已经嵌入到输出结果中。
- 解密 — Base64 字符串会先被解码,再拆分回盐值、IV、认证标签和密文。PBKDF2 会根据密码和盐值重新派生出同一把密钥,然后由 AES-256-GCM 解密数据。如果标签校验失败,操作会立即终止,这可以同时防止密码错误和密文被篡改的情况。
隐私说明
所有处理都完全在您的浏览器中进行。明文、密码和密文都不会发送到任何服务器。您可以打开浏览器的网络面板自行验证,在加密或解密过程中不会产生任何外发请求。
作为参考,结果区域还提供了使用相同密码和迭代次数执行 AES-256-CBC 加密的 OpenSSL 命令。这些命令是为了方便您体验本地命令行加密,但其输出不能被本工具解密,反过来也一样。两者不兼容,主要有以下两个原因:
- 密码模式不同 — 本工具使用 AES-256-GCM(认证加密)。
openssl enc工具不支持 GCM 模式,因此这些命令退回到 AES-256-CBC,而后者不带内置的认证标签。
- 二进制格式不同 — 本工具会将输出打包为
salt(16 字节)+ IV(12 字节)+ auth tag(16 字节)+ ciphertext,然后再进行 Base64 编码。OpenSSL 则使用自己的Salted__头格式,盐值只有 8 字节,也没有认证标签。
正因为这些差异,这里生成的任何密文都只能在这里解密,而这些 OpenSSL 命令生成的任何密文也只能通过对应的 openssl enc -d 命令解密。