事情经过是一个服务器要将文件加密打包推送至另外一个服务器,两台服务器openssl版本不一致。导致加密和解密在两台服务器之间都可以正常运行,一方加密一方解密就报错无法解压。
问题原因
openssl1.0.x 和openssl1.1.x之间因为加密方式不同,opensssl 1.0版本的加密算法是MD5,而1.1版本的默认加密算法SHA256。 不同系统使用的openssl版本
操作系统 | openssl版本 |
---|---|
CentOS 5 | 0.9.8e |
CentOS 6 | 1.0.1e |
CentOS 7 | 1.0.1e |
Ubuntu 14.04 LTS | 1.0.1f |
Ubuntu 16.04 LTS | 1.0.29 |
Debian 7(Wheezy) | 1.0.1e |
Debian 8 (Jessie) | 1.0.1k |
因为openssl算法摘要不同从而导致不能跨版本进行加密解密操作。具体内容可查看 https://www.codenong.com/39637388/
解决办法 openssl指定默认摘要
openssl加密和解密时候,1.1版本的指定加密算法即可。
原始命令
#加密
tar -cvf - dir_name | openssl enc -aes-128-ecb -salt -pass pass:password -out file_name.tgz
#解密
openssl enc -d -aes-128-ecb -salt -pass pass:password -in file_name.tgz | tar -x
指定openssl加密算法
#加密
tar -cvf - dir_name | openssl enc -aes-128-ecb -salt -pass pass:password -md md5 -out file_name.tgz
#解密
openssl enc -d -aes-128-ecb -salt -md md5 -pass pass:password -in file_name.tgz | tar -x
注意:本文归作者所有,未经作者允许,不得转载