如何在命令行上用密码保护 gzip 文件?

如何在命令行上用密码保护 gzip 文件?

我想使用 Ubuntu 10.04 上的 tar 命令创建一些 tar.gz(可能还有 tar.bz2)文件。

我想用密码保护该文件。

执行此操作的命令是什么(我已经在 Google 中搜索过,但没有找到任何内容显示如何使用密码创建和提取压缩文件)。

有人知道怎么做吗?

答案1

您必须将 Unix 哲学应用于此任务:每个任务需要一个工具。

tar打包和压缩是和gzip或 的工作。加密是 或的bzip2工作:gpgopenssl

加密

 % tar cz folder_to_encrypt | \
      openssl enc -aes-256-cbc -pbkdf2 -iter 100000 -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变体使用对称加密,您必须告知接收方所使用的“密码”(又称“密钥”)。该gpg变体结合使用对称和非对称加密,您使用接收方的密钥(这意味着您不必向任何人透露任何涉及的密码)来创建会话密钥并使用该密钥加密内容。

如果您选择 zip(或 7z)路线:本质上与变体相同openssl,您必须告诉接收方密码。

答案2

如果你只是想用密码保护文件,那么可以通过命令行使用 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*

答案3

以下是几种方法。需要注意的一点是,如果您要使用单独的压缩和加密工具,则应始终先压缩再加密,因为加密数据本质上是不可压缩的。

这些示例压缩并加密一个名为的文件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

使用gzipaespipe

$ 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 是一个多功能工具,所以我认为值得一提。

答案4

tar、gzip 和 bzip2 都不支持密码保护。请使用支持密码保护的压缩格式(例如 zip),或者使用其他工具(例如 GnuPG)进行加密。

相关内容