1

是否可以加密包含目录但不包含文件的 zip 文件?或者如果这是不可能的,如何加密目录本身?

我有一个带有子目录的目录。我需要加密它。我读了一个建议先压缩它然后加密压缩文件。

我也不想要一个压缩文件的压缩包。以防万一有人建议。我真的需要加密目录或它的 zip 文件。还是这是唯一可能的方法?

我怎么知道我的文件已被加密?

我的程序是用java编写的。并在android中应用。

非常感谢您的意见。

4

1 回答 1

0

据我所知,ZIP 规范允许对每个文件的内容进行加密,并且理论上每个文件都有一个单独的密码。

如果要加密目录及其下的所有文件,则需要存档目录并加密存档。目录不被视为可加密项目,因为它只是一个占位符 - 与目录相关的所有信息都是 zip 条目属性的一部分,并且不可加密,因为只有文件的内容被加密(这是根据压缩规范)。

要确定文件是否已加密,您可以尝试使用 zip 工具进行解压缩,而无需指定密码。程序应提示输入加密文件的密码。请注意,在撰写本文时,所有 info-zip 工具都不支持 AES 加密,因此您可能无法使用此方法测试提取文件。

使用 zipinfo 查看“状态”列,如果全部大写,则已加密(良好的经验法则):

host:~/bin% zip hello.zip radio    
updating: radio (deflated 30%)
host:~/bin% zipinfo hello.zip
Archive:  hello.zip   307 bytes   1 file
-rwxr-xr-x  3.0 unx      211 tx defN  9-Jun-09 11:33 radio
1 file, 211 bytes uncompressed, 147 bytes compressed:  30.3%

tx注意非密码保护条目的小写字母

host:~/bin% zip -P fred hello.zip radio
  adding: radio (deflated 30%)
host:~/bin% zipinfo hello.zip
Archive:  hello.zip   335 bytes   1 file
-rwxr-xr-x  3.0 unx      211 TX defN  9-Jun-09 11:33 radio
1 file, 211 bytes uncompressed, 147 bytes compressed:  30.3%

注意密码保护条目的大写TX

jar 工具产生了令人敬畏的消息(ymmv):

host:~/bin% zip -P fred hello.zip radio
updating: radio (deflated 30%)
host:~/bin% jar tvf hello.zip          
java.util.zip.ZipException: invalid CEN header (encrypted entry)
    at java.util.zip.ZipFile.open(Native Method)
    at java.util.zip.ZipFile.<init>(ZipFile.java:214)
    at java.util.zip.ZipFile.<init>(ZipFile.java:144)
    at java.util.zip.ZipFile.<init>(ZipFile.java:115)
    at sun.tools.jar.Main.list(Main.java:1004)
    at sun.tools.jar.Main.run(Main.java:245)
    at sun.tools.jar.Main.main(Main.java:1177)
于 2013-04-08T14:33:22.687 回答