You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过OpenSSL CLI实现指定参数的ChaCha20/Poly1305加解密?

使用OpenSSL CLI实现ChaCha20/Poly1305加解密操作

完全可以通过OpenSSL CLI实现你要求的ChaCha20/Poly1305加解密操作,OpenSSL从1.1.0版本开始原生支持chacha20-poly1305算法,下面是具体操作步骤:

加密操作

加密命令会自动将16字节的Poly1305 tag附加到密文末尾,直接输出符合你要求的格式。

基础文件加密命令

openssl enc -chacha20-poly1305 -e -in plaintext.bin -out ciphertext_with_tag.bin -K <32字节十六进制密钥> -iv <12字节十六进制nonce>

参数说明:

  • -chacha20-poly1305:指定使用ChaCha20-Poly1305认证加密算法
  • -e:启用加密模式
  • -in:指定待加密的载荷文件路径
  • -out:指定输出的带tag密文文件路径(tag自动附加在密文末尾,长度16字节)
  • -K:32字节密钥的十六进制表示(需输入64个十六进制字符,例如00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff)
  • -iv:12字节nonce的十六进制表示(需输入24个十六进制字符,例如00112233445566778899aabb)

标准输入/输出加密

如果不需要文件,直接从标准输入读取载荷或输出到标准输出,可使用:

echo -n "你的待加密内容" | openssl enc -chacha20-poly1305 -e -K <密钥> -iv <nonce> > ciphertext_with_tag.bin

解密操作

解密时OpenSSL会自动读取密文末尾的16字节tag进行验证,验证失败会直接报错。

基础文件解密命令

openssl enc -chacha20-poly1305 -d -in ciphertext_with_tag.bin -out plaintext.bin -K <32字节十六进制密钥> -iv <12字节十六进制nonce>

参数说明:

  • -d:启用解密模式
  • 其余参数与加密命令一致,确保密钥和nonce与加密时完全相同

关键注意事项

  1. 密钥与Passphrase的区别:
    ChaCha20-Poly1305直接使用32字节的原始密钥,而非任意字符串passphrase。如果你的输入是字符串形式的passphrase,需要先将其转换为32字节密钥,比如用SHA-256哈希生成:

    echo -n "你的字符串passphrase" | openssl dgst -sha256 -binary | xxd -p
    

    这个命令会输出64个十六进制字符,可直接作为-K参数的值。

  2. Nonce唯一性:
    12字节的nonce必须每次加密使用唯一值,重复使用同一nonce和密钥会导致加密数据完全泄露,这是AEAD算法的核心安全要求。

  3. 版本要求:
    确保你的OpenSSL版本≥1.1.0,旧版本不支持chacha20-poly1305算法,可通过openssl version命令查看版本。

内容的提问来源于stack exchange,提问作者paweljakubas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 07:50:19