能否通过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与加密时完全相同
关键注意事项
密钥与Passphrase的区别:
ChaCha20-Poly1305直接使用32字节的原始密钥,而非任意字符串passphrase。如果你的输入是字符串形式的passphrase,需要先将其转换为32字节密钥,比如用SHA-256哈希生成:echo -n "你的字符串passphrase" | openssl dgst -sha256 -binary | xxd -p这个命令会输出64个十六进制字符,可直接作为
-K参数的值。Nonce唯一性:
12字节的nonce必须每次加密使用唯一值,重复使用同一nonce和密钥会导致加密数据完全泄露,这是AEAD算法的核心安全要求。版本要求:
确保你的OpenSSL版本≥1.1.0,旧版本不支持chacha20-poly1305算法,可通过openssl version命令查看版本。
内容的提问来源于stack exchange,提问作者paweljakubas
相关产品推荐
相关产品推荐

