Answers:
您必须将unix理念应用到此任务:每个任务一个工具。
tarring和压缩是一个工作,tar
和gzip
或bzip2
,加密是任何工作gpg
或openssl
:
加密
% tar cz folder_to_encrypt | \
openssl enc -aes-256-cbc -e > out.tar.gz.enc
解密
% openssl enc -aes-256-cbc -d -in out.tar.gz.enc | tar xz
或使用gpg
% gpg --encrypt out.tar.gz
openssl-variant使用对称加密,您必须将使用的“密码”(也称为“密钥”)告知接收方。gpg-variant结合使用了对称加密和非对称加密,您使用接收方的密钥(这意味着您不必告诉任何涉及到任何人的密码)来创建会话密钥并使用该密钥加密内容。
如果使用zip(或7z)路由:本质上与openssl-variant相同,则必须告知接收方密码。
openssl enc -aes-256-cbc -e -in foo.tar.gz -out bar.tar.gz.enc
如果您只是想用密码保护文件,请通过命令行使用hand zip实用程序
zip -e <file_name>.zip <list_of_files>
-e要求zip实用程序加密在文件中提到的文件
工作示例:
$ touch file_{0,1}.txt # creates blank files file_0 & file_1
$ zip -e file.zip file_* # ask zip to encrypt
$ ENTER PASSWORD:
$ VERIFY PASSWORD:
$ ls file*
这是几种方法。需要注意的一件事是,如果要使用单独的压缩和加密工具,则应始终在加密之前进行压缩,因为加密的数据本质上是不可压缩的。
这些示例压缩和加密名为的文件clear_text
。
使用 gpg
$ gpg -c clear_text #Compress & Encrypt
$ gpg -d clear_text.gpg #Decrypt & Decompress
gpg默认会在加密之前压缩输入文件,这-c
意味着使用带有密码的对称加密。输出文件将是clear_text.gpg
。使用的好处之一gpg
是使用标准的OpenPGP格式,因此任何支持OpenPGP的加密软件都可以对其解密。
使用 mcrypt
$ mcrypt -z clear_text #Compress & Encrypt
$ mdecrypt -z clear_text.gz.nc #Decrypt & Decompress
该-z
选项会压缩。默认情况下,这会输出一个名为的文件clear_text.gz.nc
。
使用 bcrypt
$ bcrypt -r clear_text #Compress & Encrypt
$ bcrypt -r clear_text.bfe #Decrypt & Decompress
bcrypt在默认加密之前会先压缩,该-r
选项是这样,以便在处理过程中不会删除输入文件。clear_text.bfe
默认情况下,将调用输出文件。
使用gzip
和aespipe
$ cat clear_text | gzip | aespipe > clear_text.gz.aes #Compress & Encrypt
$ cat clear_text.gz.aes | aespipe -d | gunzip > clear_text #Decrypt & Decompress
aespipe听起来像是一个程序,该程序在stdin上输入并在stdout上输出AES加密数据。它不支持压缩,因此您可以先通过gzip传递输入。由于输出转到stdout,因此您必须将其重定向到使用您自己选择的名称的文件。可能不是最有效的方式来完成您要问的事情,但是aespipe是一种多功能工具,因此我认为值得一提。
您可以使用7zip创建受密码保护的存档。您可以通过以下方式在命令行(或脚本)中指定密码:
7z a -p<password> <someprotectedfile>.7z file1.txt file2.txt
7zip也可以从STDIN中读取,如下所示:
cat <somefile> | 7z a -si -p<password> <someprotectedfile>.7z
如果必须使用zip文件,则可能需要使用-t<type>
参数(例如-tzip
)。
tar,gzip或bzip2都不支持密码保护。请使用压缩格式(例如zip),或使用其他工具(例如GnuPG)对其进行加密。
-r
。
openssl aes-256-cbc -d -in out.tar.gz.enc -out decrypted.tar.gz