AES 加密 / 解密

粘贴文本和口令,即可用所选 PHP OpenSSL cipher 快速进行 AES 加密或解密。AES 是 NIST 在 FIPS 197 中标准化的对称分组密码,广泛用于 TLS、WPA2、VPN 和磁盘加密系统;但本页只是面向低风险文本的便捷工具,不是经过审计的秘密保险箱。对于敏感文件或需要长期保存的秘密,请使用 age、GnuPG 或 7-Zip 等离线工具。

如何用 AES 加密文本

  1. 1

    选择 OpenSSL cipher

    当前选项包括 CBC、CTR 和 GCM 变体。CBC 和 CTR 输出未认证,本工具也不会存储或验证 GCM 认证 tag。

  2. 2

    输入口令

    口令会用 SHA-256 哈希一次来形成 AES 密钥。这里没有 PBKDF2、salt、Argon2 或 work factor,因此请使用长且随机的口令。

  3. 3

    粘贴低风险文本

    这是服务端 Livewire/PHP OpenSSL 工具。不要粘贴你不愿发送给本站的密码、生产密钥、私人文档或秘密。

  4. 4

    复制 Base64 结果

    加密时会生成随机 IV,把它放在原始密文前面,然后将合并后的字节编码为 Base64。解密需要同一个 cipher 和同一个口令。

本工具实际输出什么

此实现使用 PHP OpenSSL。加密时,它会用 SHA-256 哈希口令,生成所选 cipher 所需长度的随机 IV,加密文本,然后返回:

Base64(IV || 密文)

输出包含 salt、PBKDF2 参数、HMAC 或 GCM 认证 tag。它不兼容 Web Crypto、age、GnuPG、OpenSSL 命令行配方或 7-Zip 生成的格式。

AES 选项的实际含义

AES 的固定分组大小是 128 bit(16 byte),标准密钥长度为 128、192 和 256 bit。在这里,重要的安全差异不只是密钥长度,还包括加密消息是否经过认证。

Cipher 选项 在本工具中需要知道
AES-128-CBC / AES-192-CBC / AES-256-CBC 常见分组模式,使用随机 IV 和 PKCS#7 padding。需要单独的 MAC(如 HMAC-SHA-256)来检测篡改。
AES-256-CTR 将 AES 变成类似流模式的用法。也需要单独认证,并且绝不能用同一密钥复用同一个 IV/counter。
AES-128-GCM / AES-256-GCM GCM 通常是 AEAD 模式,但前提是保存并检查认证 tag。本工具输出不包含该 tag,因此不要把它当作认证加密来依赖。

安全提醒

OWASP 的加密存储指南建议尽量使用认证加密,或使用加密加单独 MAC。使用此工具时请记住:

  • 这是对称加密 - 同一个口令用于解密。请通过不同于密文的渠道共享口令。
  • 弱口令在这里就是弱密钥 - SHA-256 速度快且无 salt,攻击者拿到输出后可以快速尝试猜测。
  • CBC 和 CTR 需要认证 - 如果没有 HMAC 或其他 MAC,攻击者可能能修改密文而不被发现。
  • 不要用同一密钥复用 IV 或 nonce - 本工具加密时会生成新的随机 IV,但粘贴的外部数据也必须遵守同一规则。
  • 真正的秘密请使用经过审计的工具 - age、GnuPG 和 7-Zip 会更谨慎地处理文件格式、元数据和认证。

常见问题

当前组件会用 SHA-256 哈希口令,并把得到的字节作为 OpenSSL 的密钥材料。它不使用 PBKDF2、salt、scrypt 或 Argon2,因此短口令或复用口令有风险。

不提供。CBC 和 CTR 需要单独的 MAC,例如 HMAC-SHA-256。虽然 GCM 通常提供 AEAD 认证,但本工具不会在 Base64 输出中保存或验证 GCM tag。

当 Livewire action 运行 PHP OpenSSL 时,处理发生在网站服务器上。这不是只在浏览器内运行的 Web Crypto 工具,因此不要粘贴高价值秘密、私钥或敏感文档。

Base64 结果包含随机 IV,后面跟着原始密文。CBC padding 可能增加字节,Base64 也会让二进制数据大约增加三分之一。保存格式不包含 salt 或认证 tag。

此工具只处理文本,最好仅用于低风险片段。对于文件或重要秘密,请使用 age、GnuPG 或 7-Zip 等经过审计的离线加密工具。

相关工具