跳到主要内容
加解密工具

ChaCha20-Poly1305 加解密工具

使用 ChaCha20 或 XChaCha20-Poly1305 安全加解密文本,适合现代 AEAD 或对接 RFC 8439 的场景。

ChaCha20-Poly1305 加解密区

密钥、口令、明文和密文只在当前浏览器中处理,不会上传或保存。

高级设置 XChaCha20-Poly1305 · v1 JSON

固定参数

256 位密钥 · 24 字节 nonce · 16 字节认证标签

XChaCha20-Poly1305 使用 24 字节随机 nonce,更适合直接安全生成随机 nonce。
密文格式

JSON 自动携带算法和解密所需参数

密钥来源
附加认证数据(AAD,可选) 未填写

AAD 不加密,但会参与 Poly1305 认证;解密时必须使用完全相同的字节

生成或输入密钥后,可以使用 XChaCha20-Poly1305 加密

0 字符 · 0 字节

ChaCha v1 JSON 密文结果

0 字符

什么时候使用

适合需要现代带认证加密、运行环境对 AES 硬件加速依赖较少,或需要对接 RFC 8439 的场景。没有明确互操作要求时,优先使用默认的 XChaCha20-Poly1305。

快速使用

  1. 保持默认参数,点击“生成随机密钥”。
  2. 输入明文并执行加密。
  3. 分别保存密钥和 ChaCha v1 JSON;解密时粘贴 JSON,页面会自动同步算法与密钥来源。

工具说明

这个工具使用 ChaCha20 流加密和 Poly1305 消息认证处理 UTF-8 文本,提供两个带认证的 AEAD 算法:

  • ChaCha20-Poly1305:12 字节 nonce,遵循 RFC 8439。
  • XChaCha20-Poly1305:24 字节 nonce,默认推荐。

两种算法都使用 32 字节密钥和 16 字节认证标签。工具不提供没有 Poly1305 认证的纯 ChaCha20,避免把不能检测篡改的密文误用于生产场景。

页面默认使用 XChaCha20-Poly1305 + Base64 原始密钥 + ChaCha v1 JSON。也可以改用 RFC 8439 的 ChaCha20-Poly1305、PBKDF2 口令派生或原始参数模式;两种算法都支持 UTF-8 和标准 Base64 AAD。

密钥、口令、AAD、明文和密文只在当前浏览器中处理,不会上传或保存。算法实现来自项目已有的 @noble/ciphers

算法选择

算法密钥nonce认证标签建议
ChaCha20-Poly130532 字节12 字节16 字节对接要求 RFC 8439 的系统
XChaCha20-Poly130532 字节24 字节16 字节默认推荐,更适合随机 nonce

同一密钥下 nonce 绝不能重复。本工具每次加密都使用浏览器安全随机数生成新 nonce;不要手动复用旧密文中的 nonce 加密新内容。

密钥来源

Base64 原始密钥

输入必须是标准 Base64 编码的 32 字节数据。可以粘贴外部密钥,也可以在浏览器中生成随机密钥。

PBKDF2 口令派生

口令模式使用 PBKDF2-HMAC-SHA-256、600000 次迭代和每次随机生成的 16 字节盐,派生 256 位密钥。JSON 会保存盐和派生参数,但不会保存口令。

AAD

AAD 不会被加密,但会参与 Poly1305 认证。页面支持:

  • UTF-8 文本:先使用 UTF-8 转换为字节。
  • 标准 Base64:直接表示任意 AAD 字节。

解密时必须提供完全相同的 AAD,否则认证失败。v1 JSON 会保存最终 AAD 字节的 Base64;原始参数模式需要手动重新输入。

密文格式

ChaCha v1 JSON

{
  "v": 1,
  "alg": "XChaCha20-Poly1305",
  "secretMode": "passphrase",
  "nonce": "<24-byte Base64>",
  "ciphertext": "<Base64>",
  "authTag": "<16-byte Base64>",
  "aad": "<optional Base64>",
  "kdf": "PBKDF2-HMAC-SHA-256",
  "iterations": 600000,
  "salt": "<16-byte Base64>"
}
  • ciphertext 不包含认证标签。
  • 没有 AAD 时省略 aad
  • 原始密钥模式省略 KDF、迭代次数和盐。
  • 解密时页面会读取 JSON 中的算法和密钥来源,并自动同步页面参数。

原始参数

原始参数模式分别显示:

  • Base64 密文。
  • 12 或 24 字节 Base64 nonce。
  • 16 字节 Base64 认证标签。
  • 口令模式使用的 16 字节 Base64 盐值。

原始参数不携带算法和密钥来源,解密时需要手动选择正确配置并保留全部参数。

常见问题

ChaCha20-Poly1305 和 XChaCha20-Poly1305 有什么区别?

主要区别是 nonce 长度。ChaCha20-Poly1305 使用 12 字节 nonce,适合对接 RFC 8439;XChaCha20-Poly1305 使用 24 字节 nonce,更适合直接通过安全随机数生成。

为什么修改密文后无法解密?

Poly1305 会认证密文和 AAD。密钥、nonce、AAD、密文或认证标签任意一项不匹配,解密都会失败。

可以只使用 ChaCha20、不使用 Poly1305 吗?

本工具不提供这种模式。纯 ChaCha20 不能检测密文篡改,容易被误用;这里仅提供带认证的 AEAD 组合。

密钥和内容会上传吗?

不会。随机数生成、密钥派生、加密、认证、解密和复制都在当前浏览器中完成。