工作原理
AES 是分组密码,分组长度 128 位,密钥长度 128、256(很少用 192)位。分组密码一次只能加密一个分组,处理更长的数据需要工作模式,而安全性正是在模式上被决定或被毁掉的。AES-GCM 是认证模式:除密文外还产出认证标签,解密时若标签不匹配就拒绝返回明文。仅这一条性质就击败了一整类攻击,因为攻击者在传输中翻转比特会引发硬失败,而不是悄无声息地被篡改。
GCM 需要一个 nonce(一次性使用的数值),通常为 96 位随机数。nonce 不是秘密,一般与密文拼接在一起。绝对关键的是同一个密钥与 nonce 的组合永不重复:一旦重复,就会泄露两段明文的异或值,更糟的是攻击者可以伪造标签。本工具每次加密都生成全新的随机 nonce 并与输出一同保存,这也是同一段文本加密两次会得到两个不同密文的原因。
CBC 是较旧的分组模式,只因为大量既有代码仍在使用而保留。它把每个分组链入下一个分组,需要初始向量,且与 GCM 的 nonce 一样必须不可预测。关键在于 CBC 自身不提供任何认证:攻击者可以翻转密文中的比特,并确切知道下一个明文分组中哪些比特会随之翻转。针对未认证 CBC 的填充预言攻击曾是若干重大数据泄露事件的成因。写新代码请用 GCM;必须用 CBC 时,应以独立密钥做 encrypt-then-MAC。
RSA 是非对称密码,解决的是另一个问题:加密方使用公钥,只有私钥持有者能解密。其数学基础是大素数乘积上的模幂运算,速度慢,且只能处理小于密钥长度的数据,因此 RSA 几乎总是用来加密一把对称密钥,再由该密钥加密主体数据。本工具实现 RSA-OAEP 配合 SHA-256,即取代了易受攻击的 PKCS#1 v1.5 的填充方案。密钥对使用浏览器 CSPRNG 在本地生成。
常见应用场景
- 通过聊天工具把密码或 API 密钥发给同事,而不让明文出现在消息里。
- 验证应用产出的密文能否用你配置的密钥正确解开。
- 生成 RSA 密钥对,用于测试自家服务的签名或加密流程。
- 用已知明文样本解密,反推遗留系统实际使用的 AES 模式与 IV。
- 生成一小段 AES-GCM 测试向量,粘贴进单元测试。
- 核对厂商文档中关于认证加密的描述与其 SDK 实际输出是否一致。
最后更新: 2026-10-14