在另一个系统上使用 openssl 解码在一个系统上编码的文件

The*_*iot 5 openssl

我正在使用以下命令使用 openSSL 在 Ubuntu 机器上加密文件:

openssl enc -aes-256-cbc -in mydbBackup.tar -out  mydbBackup.enc.tar 
     -pass pass:scecret
Run Code Online (Sandbox Code Playgroud)

我把它转移到ftp服务器。现在,当我将文件从 ftp 复制到另一台机器并尝试使用以下命令解密时:

openssl enc -aes-256-cbc -d -in mydbBackup.tar -out  mydbBackup.enc.tar 
     -pass pass:scecret
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

bad decrypt
139727625037472:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:
bad decrypt:evp_enc.c:467:
Run Code Online (Sandbox Code Playgroud)

是由于文件传输出现问题还是无法解密在另一个系统上加密的文件?

编辑:-

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
Run Code Online (Sandbox Code Playgroud)

所以它正在制作一些东西,但它抛出错误并tar抱怨生成的文件不是gzip存档。

更新:-我计算了原始文件的 MD5 校验和(如@Oliver Salzburg 所建议的)和从 ftp 传输的一个,令人惊讶的是它为这两个文件提供了相同的值。

21b95cb2431c5d61c93fe642d63ca7d0
Run Code Online (Sandbox Code Playgroud)

Der*_*ler 2

一般来说,像这样加密的文件应该可以在另一个系统上解密(我只是测试它只是为了确保)。

因此,要么文件被“损坏”,要么有其他与解密冲突的东西。但我只能对此做出假设。我记得与此类似的问题是由于将密钥/证书作为文本传输而引起的。生成的文件附加了一个BOM,这会导致加密/解密过程出现问题(它也被转换为 Unicode,但这也没有帮助)。

  • @TheVillageIdiot 你能计算两个系统上加密文件的 MD5 和并检查它们是否相同吗? (2认同)