如何使用文件名加密来压缩目录?

如何使用文件名加密来压缩目录?

使用命令行,我知道我可以使用以下命令加密目录:

zip -er Directory.zip /path/to/directory

但是,这不会加密文件名本身。如果有人跑:

unzip Directory.zip

如果重复输入错误的密码,unzip 命令将循环遍历所有包含的文件名,直到输入正确的密码。示例输出:

unzip Directory.zip 
Archive:  Directory.zip
   creating: Directory/
[Directory.zip] Directory/sensitive-file-name-1 password: 
password incorrect--reenter: 
password incorrect--reenter: 
   skipping: Directory/sensitive-file-name-1  incorrect password
[Directory.zip] Directory/sensitive-file-name-2 password: 
password incorrect--reenter: 
password incorrect--reenter: 
   skipping: Directory/sensitive-file-name-2  incorrect password
[Directory.zip] Directory/sensitive-file-name-3 password: 
password incorrect--reenter: 
password incorrect--reenter: 
   skipping: Directory/sensitive-file-name-3  incorrect password

等等。

使用命令行,有没有一种方法可以加密压缩目录,同时加密或隐藏文件名本身?

谢谢。

答案1

在 zip 文件中,仅文件内容被加密。文件元数据(包括文件名)未加密。这是文件格式的限制:每个条目都单独压缩,如果加密,则单独加密。

您可以使用7-拉链反而。它支持元数据加密(-mhe=on通过Linux命令行实现)。

7z a -p -mhe=on Directory.7z /path/to/directory

所有主要操作系统和大多数次要操作系统都有 7zip 实现,但这可能需要安装额外的软件(IIRC Windows 如今可以直接解压缩加密的 zip 文件)。如果需要 7z 进行解密是一个问题,您可以仅依靠 zip,首先使用 zip 将目录打包到单个文件中,然后加密该文件。如果您这样做,关闭单个文件的压缩并指示外部 zip 压缩 zip 文件,您将获得更好的整体压缩比。

zip -0 -r Directory.zip /path/to/directory
zip -e -n : encrypted.zip Directory.zip

答案2

您可以使用您喜欢的工具创建存档,然后用于bcrypt执行加密/解密。

A)要创建加密文件:

tar -czf Directory.tgz /path/to/directory
bcrypt Directory.tgz

这会给你一个 Blowfish 加密的文件Directory.tgz

二)要反转此过程:

bcrypt Directory.tgz.bfe
tar -xf Directory.tgz

答案3

因为目前还没有一个严格回答如何使用的答案压缩要加密文件名列表以及文件内容,这里是一个。正如其他答案中所评论的,zip 加密可能安全也可能不安全,具体取决于您使用的版本,无论如何,从技术角度来看,像 tar 和 gpg 这样的工具更好,但是当您陷入困境时拥有为非技术用户创建便携式存档(即仅使用 zip,也许他们不能或根本不会安装 7-zip...),一个简单的解决方法是制作中间纯 zip 的加密 zip。它通常只为额外的标头添加大约 200 个字节。

% zip -r directory.zip secret-stuff
% zip -e -r directory-encrypted.zip directory.zip

然后,当有人尝试列出文件名(或在密码猜测期间透露文件名)时,他们只会看到以下内容:

% unzip -l directory-encrypted.zip
Archive:  directory-encrypted.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
  1747768  2023-02-14 04:45   directory.zip
---------                     -------
  1747768                     1 file

拉开外拉链后中间的然后可以列出一个:

% unzip -l directory.zip # unencrypted intermediate archive
Archive:  directory.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2023-02-14 03:50   secret-stuff/
        0  2023-02-06 21:36   secret-stuff/really/
        0  2023-02-06 21:36   secret-stuff/really/totally/
  1844742  2023-02-06 19:44   secret-stuff/really/totally/uh-oh.pdf
    72279  2023-02-06 19:45   secret-stuff/really/totally/another-one.pdf
        0  2023-02-14 03:50   secret-stuff/really/oops/
      225  2023-02-14 03:50   secret-stuff/really/oops/file-list.txt
---------                     -------
  1917246                     7 files

相关内容