2018年12月

压缩

tar -zcvf /path/to/file.tar.gz file

解压

tar -zxvf /path/to/file.tar.gz /path/to

压缩加密

tar -zcvf - file | openssl aes-256-cbc -salt -k password -out /path/to/file.tar.gz

解密解压

openssl aes-256-cbc -d -k password -salt -in /path/to/file.tar.gz | tar zxvf -

上面的加密与解密操作在相同版本的openssl操作是没有问题的,但是在不同的版本(比如1.0.2和1.1.0版本之间)对于密钥和IV的生成方法有差异,所以在不同版本之间加密解密就会有问题。所以,在不同版本之间采用AES加解密的时候,需要使用参数支持指定密钥和IV,而不是让openssl自动生成,例子如下:

压缩加密

tar -zcvf - file | openssl aes-256-cbc -K 12345678901234567890 -iv 12345678 -out /path/to/file.tar.gz

解密解压

openssl aes-256-cbc -d -K 12345678901234567890 -iv 12345678 -in /path/to/file.tar.gz | tar zxvf -

在这里,注意AES算法的密钥和初始向量都是128位的,这里-K和-iv后的参数都是16进制表示的,最大长度为32。 即-iv 12345678 指定的初始向量在内存中为 | 12 34 56 78 12 34 56 78 00 00 00 00 00 00 00 00 |。