2014-02-13 175 views
7

我有AES加密文件,它编码为base64单行字符串(没有断线),需要解密。 Here it is.OpenSSL单行base64输入。读取输入文件时出错

但是当我使用:

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 

结论:如果base64线后有一个在加密的文件中没有newline的OpenSSL无法解码非多的base64输入

+0

你的问题是什么? – jww

+0

对吗?//// –

+1

你的结论是正确的。 Openssl base64解码不适用于长度超过64个字符的行。如果它们更长,则需要在每64个字符后插入一个换行符。 – kkeller

回答

5

加密

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 

,你会收到一个错误,说error reading input file

+0

ie:正在解密的base64字符串需要尾随换行符。感谢您的解决方案! – rewolf