如何在命令行上对gzip文件进行密码保护?
我想在Ubuntu 10.04上使用tar命令创建一些tar.gz(可能还有tar.bz2)文件。
我想对文件进行密码保护。
用什么命令来做这件事(我已经上网查过了,但没有找到任何关于如何使用密码创建和解压压缩文件的信息)。
有谁知道怎么做?
你必须将 unix-philosophy 应用到这个任务中:每个任务都有一个工具。
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是一样的,你必须把密码告诉接收方。
如果你的目的只是为了密码保护文件,那么通过命令行
zip -e <file_name>.zip <list_of_files>
-e要求压缩工具对
中提到的文件进行加密。
这里有几种方法可以做到这一点。需要注意的是,如果你要使用单独的压缩和加密工具,你应该总是在加密前进行压缩,因为加密后的数据基本上是不可压缩的。
这些例子压缩和加密了一个名为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是一个多功能的工具,所以我认为值得一提。
tar、gzip和bzip2都不支持密码保护。要不就用zip这样的压缩格式,要不就用GnuPG等其他工具加密。