OpenSSL 一行 base64 输入。读取输入文件时出错

Posted

技术标签:

【中文标题】OpenSSL 一行 base64 输入。读取输入文件时出错【英文标题】:OpenSSL one line base64 input. error reading input file 【发布时间】:2014-03-13 01:56:01 【问题描述】:

我有 AES 加密文件,该文件编码为 base64 单行字符串(没有断线),需要对其进行解密。 Here it is.

但是当我使用时:

openssl enc -d -a -aes-256-cbc -in encrypted -out decrypted

OpenSSL 抛出“读取输入文件时出错” 但是 base64 util 解密它就像一个魅力:

base64 -d encrypted | openssl enc -d -aes-256-cbc > decrypted

试图找到原因并转换为一行base64文件:

base64 -w 0 aesfile | openssl enc -d -a -aes-256-cbc > decrypted
# error reading input file

base64 aesfile | openssl enc -d -a -aes-256-cbc > decrypted
# no errors, file decrypted

结论:OpenSSL 无法解码非多行 base64 输入

【问题讨论】:

你有什么问题? 你的结论是正确的。 Openssl base64 解码不适用于长度超过 64 个字符的行。如果它们更长,则需要在每 64 个字符后插入一个换行符。 【参考方案1】:

加密

openssl enc -aes-256-cbc -pass pass:YOURPASSWORD -p -in msg.txt -out enc.txt -base64

解密

openssl enc -aes-256-cbc -base64 -pass pass:YOURPASSWORD -d -p -in enc.txt -out dec.txt

如果在base64 行之后的加密文件中没有newline,则会收到错误提示error reading input file

【讨论】:

ie:要解密的 base64 字符串需要尾随换行符。感谢您提供此解决方案!

以上是关于OpenSSL 一行 base64 输入。读取输入文件时出错的主要内容,如果未能解决你的问题,请参考以下文章

从标准输入解码多个base64字符串

使用openssl BIO逐块进行base64解码

base64加密linux去除分隔符

使用OpenSSL进行Base64编码和解码

OpenSSL 使用 base64 编码/解码(liang19890820)

openssl从内存中读取私钥进行签名