由于专利问题,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并查看其中的文件
Zip4j支持对文件列表进行加密。。。
主要功能:
- 从Zip文件创建、添加、提取、更新、删除文件
- 读取/写入受密码保护的Zip文件
- 支持AES 128/256加密
- 支持标准Zip加密
- 支持Zip64格式
- 支持存储(无压缩(和放气压缩方法
- 从拆分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);
请参阅:http://www.lingala.net/zip4j/forum/index.php?topic=104.0
更新:
如链接中所述。zip规范不包括文件列表的加密。要隐藏文件名,您可以创建一个zip文件,包括您的文件通过再次压缩来封装它。因此,如果您打开zip2.zip,您将只看到"zip1.zip",而不会看到原始文件名。