最近需要用到加密压缩文件的功能,找了一下资料发现tar命令本身就支持加密压缩和解压,具体命令如下:
类似以上的加密压缩各种博客都有写到,于是乎,我就用了。
用起来发现真是可以,但是出现了一个神奇的事情,我在本地Linux系统加密压缩的文件,到我的Linux设备中竟然解密不了了?这个时候,我在网上查各种资料,这个时候就没有博客介绍了。
都是各种介绍加密解密压缩命令的博客,内容大差不差,就是没有出现我遇到的这种情况的。
于是我对比了,我的Linux系统和Linux系统设备的差异,我刚开始以为是内核版本问题,最后发现不是,因为这个tar的压缩其实借助了openssl的加密算法库,具体openssl以后再做介绍,所以我就查看了openssl的区别,最后发现,果然openssl的版本不一致。
那就是这里出的问题了。
至于为什么,我还没研究透彻,如果知道的可以评论告诉我,我直接说我的解决办法,新命令如下:
加密压缩命令:
tar -czf - file | openssl des3 -K key -iv IV -out file
解密解压命令:
openssl des3 -d -K key -iv IV -in file | tar -zxf - -C path
以上命令为什么可以解决问题呢,根据我的理解如下:
openssl的加密命令选项是
-salt -k
这里只有一个密码,但是加密算法应该使用这个密码和一个辅助生成密钥的默认算法生成加密所需要的信息,但是不同的openssl版本,这个默认加密算法不同,所以导致了不同版本的openssl,即使密码相同,但是仍然解密失败的原因。
用了以上命令之后,完美解决问题。