java - 密码保护的 zip 文件不是 zip 中的文件

标签 java zip4j

我想创建受密码保护的 ZIP:

// Set the compression level
parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);

// Set the encryption flag to true
// If this is set to false, then the rest of encryption properties are ignored
parameters.setEncryptFiles(true);

// Set the encryption method to Standard Zip Encryption
parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD);

// Set password
parameters.setPassword(password);

但这只是加密 zip 内的文件,但我可以打开此 zip 并查看其中的文件。这不是我想要的,我想让 zip 密码受到保护,而不是其中的文件。

最佳答案

不可能,抱歉。

这样的文件不符合 .ZIP 文件格式规范。它指出,虽然实际文件已加密,但元数据(包括文件名和大小)加密。这一直是争论的话题,但事实就是如此。它的用途之一是您得到不错的“密码不正确”而不是垃圾文件。

无论哪种方式 - 不要依赖 .zip 文件加密。这很不好。不,真的 - 这非常非常糟糕。它容易受到大量攻击。

如果您想要一个正确加密的 .zip 文件 - 就这样做吧。制作一个 .zip 文件,然后使用适当的加密来制作一个加密文件。 Java 对此有相当多的加密工具。

关于java - 密码保护的 zip 文件不是 zip 中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27402135/

相关文章:

java - 如何以 block 的形式获取 JSON 数据以报告进度?

java - DB2 和 ResultSetMetaData - 无法获取列名称

java - 从父类获取泛型 Class 对象

java - sql 文件中的 ScriptStatementFailedException

java - 服务器停止时从类路径读取文件

java - zip4j,从输入流中提取受密码保护的文件(blob 输入流,它是一个 zip 文件)

java - zip4j 如何解压目录

java - 无法使用 zip4j 在 java 中创建 zip 文件

java - 使用 Zip4j : Probably not a zip file or a corrupted zip file 在 Android 中创建 zipFile 时出现异常