使用Zip4j创建压缩包级密码保护的Zip文件问题求助
解决Zip包仅文件加密、目录明文可见的问题
你当前的代码只对Zip包内的文件内容进行了加密,但没有加密文件名和目录结构,所以能直接看到里面的文件名,只有打开文件时才需要密码。要实现打开Zip包就弹出密码验证,需要同时启用文件名加密。
假设你用的是Zip4j库(从代码里的ZipParameters、EncryptionMethod.AES可以判断),只需要给ZipParameters添加一行配置即可:
ZipParameters zipParameters = new ZipParameters(); zipParameters.setEncryptFiles(true); zipParameters.setEncryptionMethod(EncryptionMethod.AES); // 关键:启用文件名/目录加密,打开Zip时就需要验证密码 zipParameters.setEncryptFileName(true); List<File> filesToAdd = Arrays.asList(new File("aFile.txt"), new File("bFile.txt")); ZipFile zipFile = new ZipFile("compressed.zip", "password".toCharArray()); zipFile.addFiles(filesToAdd, zipParameters);
关键参数说明
setEncryptFileName(true):这是让Zip包在打开时就要求输入密码的核心配置,它会把目录结构和文件名一起加密,没有正确密码的话无法查看任何内容列表。- AES加密方式:相比传统Zip加密更安全,建议保持使用。
修改后生成的Zip包,不管用什么解压工具打开,都会先弹出密码输入窗口,验证通过后才能看到里面的文件和目录。
内容的提问来源于stack exchange,提问作者shimiA
相关产品推荐
相关产品推荐

