我正在使用以下命令通过 openSSL 加密 Ubuntu 机器上的文件:
openssl enc -aes-256-cbc -in mydbBackup.tar -out mydbBackup.enc.tar
-pass pass:scecret
我将其传输到 ftp 服务器。现在,当我将文件从 ftp 复制到另一台计算机并尝试使用以下命令解密它时:
openssl enc -aes-256-cbc -d -in mydbBackup.tar -out mydbBackup.enc.tar
-pass pass:scecret
我收到以下错误:
bad decrypt
139727625037472:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:
bad decrypt:evp_enc.c:467:
是由于文件传输而出现的问题还是无法解密在另一个系统上加密的文件?
编辑:-
我在使用( )和不使用()ls -l
运行解密命令后执行了命令-out decrypt.tar.gz
-out decrypt.tar.gz
盐参数,我得到以下输出:
-rw-r--r-- 1 backup backup 43119360 2012-01-29 07:10 encrypt-20120128.enc.tar.gz
-rw-r--r-- 1 backup backup 43119328 2012-01-29 07:12 decrypt1.tar.gz
-rw-r--r-- 1 backup backup 43119328 2012-01-29 07:12 decrypt.tar.gz
因此,它正在大量生产一些东西,但它却引发了错误,并tar
抱怨生成的文件不是gzip
存档。
更新:- 我已经计算了原始文件和从 ftp 传输的文件的 MD5 校验和(按照@Oliver Salzburg 的建议),令人惊讶的是,它为这两个文件给出了相同的值。
21b95cb2431c5d61c93fe642d63ca7d0
答案1
一般来说,像这样加密的文件应该可以在另一个系统上解密(我只是为了确保而测试了一下)。
因此,要么文件“损坏”,要么有其他东西与解密相冲突。但我只能对此做出假设。我记得一个类似的问题是由将密钥/证书传输为文本引起的。生成的文件有一个物料清单附加到它,这导致了加密/解密过程的问题(它也被转换为 Unicode,这也没有帮助)。
答案2
命令应该是:
openssl enc -aes-256-cbc -d -in mydbBackup.enc.tar -out mydbBackup.tar
-pass pass:scecret
正如 Oliver 提到的,解密的输入/输出与加密的输入/输出相反。
也把.enc
最后一个作为惯例,“洋葱”的第一层是加密数据,而不是焦油数据。