簡體   English   中英

Java 中的半密碼保護 Zip 文件

[英]Semi password protected Zip files in Java

我需要使用 Java 創建一個 zip 文件。 庫並不重要,但 zip4j 似乎是一個不錯的選擇。 在這個 zip 文件中,只有部分文件或子目錄會受到密碼保護。 例如,在以下 zip 文件中,只有以“*”開頭的文件才會受到密碼保護:

foo.zip
 foo1.txt
 *secure
  *secure1.txt
  *secure2.txt

有沒有辦法在 Java 中實現這個場景?

提前致謝...

這個 mavne 依賴:

        <dependency>
            <groupId>net.lingala.zip4j</groupId>
            <artifactId>zip4j</artifactId>
            <version>2.6.1</version>
        </dependency>    


代碼:

            ZipParameters parameters = new ZipParameters();
            parameters.setEncryptFiles(true);
            parameters.setEncryptionMethod(EncryptionMethod.ZIP_STANDARD);
            ZipFile zip = new ZipFile(destFile, PASSWORD.toCharArray());
            zip.setCharset(InternalZipConstants.CHARSET_UTF_8);

            for (File file : srcFiles) {
                if (file.isFile()) {
                    zip.addFile(file, parameters);
                } else {
                    zip.addFolder(file, parameters);
                }
            }

無論如何,我是通過使用 zip4j 找到的。 以下代碼段可用於創建受密碼保護和不受密碼保護的文件。

對於受密碼保護的文件:

        ZipFile zipFile = new ZipFile(zipFileName);

        ZipParameters zipParameters = new ZipParameters();
        zipParameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
        zipParameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
        zipParameters.setEncryptFiles(true);
        zipParameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES);
        zipParameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256);
        zipParameters.setPassword(password);

        zipFile.addFiles(new ArrayList<>(filesToZip), zipParameters);

以及不受密碼保護的文件:

        ZipFile zipFile = new ZipFile(zipFileName);

        ZipParameters zipParameters = new ZipParameters();
        zipParameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
        zipParameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);

        zipFile.addFiles(new ArrayList<>(filesToZip), zipParameters);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM