首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何对文件名进行加密压缩目录?

如何对文件名进行加密压缩目录?
EN

Unix & Linux用户
提问于 2016-06-15 20:02:36
回答 3查看 37.2K关注 0票数 32

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

代码语言:javascript
运行
复制
zip -er Directory.zip /path/to/directory

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

代码语言:javascript
运行
复制
unzip Directory.zip

如果反复输入错误的密码,unzip命令将遍历所有包含的文件名,直到输入正确的密码为止。样本输出:

代码语言:javascript
运行
复制
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

诸若此类。

使用命令行,是否有一种方法可以在加密的同时对目录进行压缩,同时对文件名进行加密或隐藏?

谢谢。

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2016-06-16 07:32:50

在压缩文件中,只有文件内容被加密。文件元数据(包括文件名)未加密。这是文件格式的一个限制:每个条目分别压缩,如果加密,则分别加密。

您可以使用7-拉链代替。它支持元数据加密(带有Linux命令行实现的-mhe=on)。

代码语言:javascript
运行
复制
7z a -p -mhe=on Directory.7z /path/to/directory

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

代码语言:javascript
运行
复制
zip -0 -r Directory.zip /path/to/directory
zip -e -n : encrypted.zip Directory.zip
票数 48
EN

Unix & Linux用户

发布于 2016-06-15 22:15:31

您可以使用您喜欢的工具创建一个归档文件,然后使用bcrypt执行加密/解密。

( A)创建加密文件:

代码语言:javascript
运行
复制
tar -czf Directory.tgz /path/to/directory
bcrypt Directory.tgz

这将为您提供一个Blowfish加密文件Directory.tgz

( B)扭转这一进程:

代码语言:javascript
运行
复制
bcrypt Directory.tgz.bfe
tar -xf Directory.tgz
票数 4
EN

Unix & Linux用户

发布于 2023-02-14 03:05:05

因为还没有一个严格回答如何使用zip加密文件名-列表以及文件(S)内容的答案,这里有一个。正如在其他答案中所评论的,压缩加密可能是安全的,也可能不是安全的,这取决于您使用的是哪个版本,无论如何,从技术角度来看tar & gpg之类的工具更好,但是当您不得不为非技术用户创建可移植的档案时(即只使用zip,也许他们不能或甚至不会安装7-zip.)一个简单的解决方法是对中间的普通压缩进行加密。它通常只为额外的头增加大约200个字节。

代码语言:javascript
运行
复制
% zip -r directory.zip secret-stuff
% zip -e -r directory-encrypted.zip directory.zip

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

代码语言:javascript
运行
复制
% unzip -l directory-encrypted.zip
Archive:  directory-encrypted.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
  1747768  2023-02-14 04:45   directory.zip
---------                     -------
  1747768                     1 file

在提取外拉链之后,中间的拉链将是可列出的:

代码语言:javascript
运行
复制
% 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
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/289999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档