如何解决ChaCha20加密中“hex string is too short, padding with zero bytes to length”错误
解决ChaCha20加密时的"hex string is too short, padding with zero bytes to length"错误
错误原因
- 加密命令的IV参数长度错误:ChaCha20要求nonce(即OpenSSL中的iv)为12字节(96位),对应十六进制字符串长度应为24个字符。你加密命令中指定的
iv abcdefabcdefabcdefabcdefabcdef是36个字符,超出标准长度,导致OpenSSL抛出错误。 - 加密和解密的密钥/nonce不匹配:加密时使用硬编码的密钥和错误IV,解密时却用
clave.bin和nonce.bin生成的值,两边参数完全不一致,即使加密成功也无法正常解密。
修正后的完整命令流程
- 生成密钥和nonce(你的这部分命令是正确的,保留):
openssl rand -out clave.bin 16 # 128 bits = 16 bytes openssl rand -out nonce.bin 12 # 96 bits = 12 bytes
- 加密文件(使用生成的密钥和nonce的十六进制值):
openssl enc -chacha20 -in mensaje.txt -out mensaje.enc -K $(xxd -p -c 256 clave.bin) -iv $(xxd -p -c 256 nonce.bin)
- 解密文件(与加密使用同一组密钥和nonce):
openssl enc -d -chacha20 -in mensaje.enc -out mensaje_descifrado.txt -K $(xxd -p -c 256 clave.bin) -iv $(xxd -p -c 256 nonce.bin)
额外验证步骤
- 确认密钥和nonce的长度符合要求:
wc -c clave.bin # 输出应为16 wc -c nonce.bin # 输出应为12
内容的提问来源于stack exchange,提问作者Diego Guillén Serrano
相关产品推荐
相关产品推荐

