8

我想创建受密码保护的 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 并观看其中的文件

4

2 回答 2

5

Zip4j支持文件列表的加密...

主要特点

  • 从 Zip 文件中创建、添加、提取、更新、删除文件
  • 读/写受密码保护的 Zip 文件
  • 支持 AES 128/256 加密
  • 支持标准 Zip 加密
  • 支持 Zip64 格式
  • 支持 Store (No Compression) 和 Deflate 压缩方式
  • 从拆分 Zip 文件中创建或提取文件(例如:z01、z02、...zip)
  • 支持 Unicode 文件名
  • 进度监视器

看看这个示例代码AddFilesWithAESEncryption.java

// Initiate ZipFile object with the path/name of the zip file.
ZipFile zipFile = new ZipFile("c:\\ZipTest\\AddFilesWithAESZipEncryption.zip");

// Build the list of files to be added in the array list
// Objects of type File have to be added to the ArrayList
ArrayList filesToAdd = new ArrayList();
filesToAdd.add(new File("c:\\ZipTest\\sample.txt"));
filesToAdd.add(new File("c:\\ZipTest\\myvideo.avi"));
filesToAdd.add(new File("c:\\ZipTest\\mysong.mp3"));

// Initiate Zip Parameters
ZipParameters parameters = new ZipParameters();
// set compression method to deflate compression
parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); 
parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_ULTRA); 

// Set the encryption flag to true
parameters.setEncryptFiles(true);

// Set the encryption method to AES Zip Encryption
parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES);

// Set AES Key strength. Key strengths available for AES encryption are:
parameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256);

// Set password
parameters.setPassword("test123!");

// Now add files to the zip file
zipFile.addFiles(filesToAdd, parameters);
于 2017-01-10T11:43:23.150 回答
1

由于专利问题,Zip4j 不支持文件列表的加密。

见:http ://www.lingala.net/zip4j/forum/index.php?topic=104.0

更新:

如链接中所述。zip 规范不包括文件列表的加密。要隐藏文件名,您可以创建一个 zip 文件,其中包括您的文件,通过再次压缩它来封装它。因此,如果您打开 zip2.zip,您只会看到“zip1.zip”而不是原始文件名。

于 2014-11-07T12:28:08.507 回答