Bash: 如何在我的 openSSL 加密文件前加上 IV?

Bash: How can I prefix my openSSL encrypted file with the IV?

当使用已知的 IV 和密钥加密文件时,如何在结果文件前加上纯文本的 iv? 我不想有另一个文件在身边,通常当我加密东西时,我只是在加密文件前面加上 iv 前缀。

当我运行

iv=$(openssl rand -hex 16)
openssl enc -e -aes-256-cbc -K <key> -iv $iv -in text.txt -out text.enc

我的输入文本文件是 779 字节,我的输出是 784 字节。我需要它在它的前缀处有纯文本的 iv,这样它总共有 800 个字节。

感谢@PresidentJamesK.Polk的评论,我明白了:

{ echo $iv | xxd -r -p; openssl enc -e -aes-256-cbc -K <key> -iv $iv -in text.txt; } > text.enc

xxd -r -p 似乎无法正确转换为字节并在 {} 中包装得到最终文件所需的 800 字节(16 字节的十六进制字符串 = 32 十六进制字符 => 大小(编码) + 16)