Passwortgesch�tzte Archive

Mit der Aspose.ZIP API k�nnen Sie Dateien in Java komprimieren und dekomprimieren, ohne sich um die zugrunde liegende Dateistruktur zu k�mmern. Dieser Artikel zeigt, wie man sowohl einzelne als auch mehrere Dateien komprimiert.

Komprimierung von Archiven

Dateien mit traditionellem Verschl�sselungsverfahren verschl�sseln

1try (FileOutputStream zipFile = new FileOutputStream(dataDir + "CompressWithTraditionalEncryption_out.zip")) {
2    try (FileInputStream source1 = new FileInputStream(dataDir + "alice29.txt")) {
3        Archive archive = new Archive(new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$")));
4        archive.createEntry("alice29.txt", Quelle1);
5        archive.save(zipFile);
6    }
7} catch (IOException ex) {
8    System.out.println(ex);
9}

Dateien mit AES-Verschl�sselung verschl�sseln

Verschl�sselung von Dateien mit AES128

1try (FileOutputStream zipFile = new FileOutputStream(dataDir + "PasswordProtectWithAES128_out.zip")) {
2    try (FileInputStream source1 = new FileInputStream(dataDir + "alice29.txt")) {
3        Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEncryptionSettings("p@s$", EncryptionMethod.AES128)));
4        archive.createEntry("alice29.txt", source1);
5        archive.save(zipFile);
6    }
7} catch (IOException ex) {
8    System.out.println(ex);
9}

Verschl�sselung von Dateien mit AES192

1try (FileOutputStream zipFile = new FileOutputStream(dataDir + "PasswordProtectWithAES192_out.zip")) {
2    try (FileInputStream source1 = new FileInputStream(dataDir + "alice29.txt")) {
3        Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEncryptionSettings("p@s$", EncryptionMethod.AES192)));
4        archive.createEntry("alice29.txt", source1);
5        archive.save(zipFile);
6    }
7} catch (IOException ex) {
8    System.out.println(ex);
9}

Verschl�sselung von Dateien mit AES256

1try (FileOutputStream zipFile = new FileOutputStream(dataDir + "PasswordProtectWithAES256_out.zip")) {
2    try (FileInputStream source1 = new FileInputStream(dataDir + "alice29.txt")) {
3        Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEncryptionSettings("p@s$", EncryptionMethod.AES256)));
4        archive.createEntry("alice29.txt", source1);
5        archive.save(zipFile);
6    }
7} catch (IOException ex) {
8    System.out.println(ex);
9}

Passwortschutz f�r Verzeichnis

1try (FileOutputStream zipFile = new FileOutputStream(".\\all_corpus_encrypted_out.zip")) {
2    File corpus = new File(".\\CanterburyCorpus");
3    try (Archive archive = new Archive(new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$")))) {
4        archive.createEntries(corpus);
5        archive.save(zipFile);
6    }
7} catch (IOException ex) {
8    System.out.println(ex);
9}

Mehrere Dateien mit gemischten Verschl�sselungstechniken verschl�sseln

 1try (FileOutputStream zipFile = new FileOutputStream("archive.zip")) {
 2    Datei fi1 = new Datei("data1.bin");
 3    Datei fi2 = new Datei("daten2.bin");
 4    Datei fi3 = new Datei("daten3.bin");
 5    try (Archiv archive = new Archive()) {
 6        archive.createEntry("entry1.bin", fi1, false, new ArchiveEntrySettings(new DeflateCompressionSettings(), new TraditionalEncryptionSettings("pass1")));
 7        archive.createEntry("entry2.bin", fi2, false, new ArchiveEntrySettings(new DeflateCompressionSettings(), new AesEncryptionSettings("pass2", EncryptionMethod.AES128)));
 8        archive.createEntry("entry3.bin", fi3, false, new ArchiveEntrySettings(new DeflateCompressionSettings(), new AesEncryptionSettings("pass3", EncryptionMethod.AES256)));
 9        archive.save(zipFile);
10    }
11} catch (IOException ignoriert) {
12}

Dekomprimierung der Archive

Dekomprimierung von traditionell passwortgesch�tzten Archiven

 1try (FileInputStream fs = new FileInputStream(dataDir + "CompressWithTraditionalEncryption_in.zip")) {
 2    try (FileOutputStream extrahiert = new FileOutputStream(dataDir + "alice_extrahiert_out.txt")) {
 3        ArchiveLoadOptions options = new ArchiveLoadOptions();
 4        options.setDecryptionPassword("p@s$");
 5        try (Archive archive = new Archive(fs, options)) {
 6            try (InputStream dekomprimiert = archive.getEntries().get(0).open()) {
 7                byte[] b = new byte[8192];
 8                int bytesRead;
 9                while (0 < (bytesRead = decompressed.read(b, 0, b.length))) {
10                    extrahiert.write(b, 0, bytesRead);
11                }
12            }
13        }
14    }
15} catch (IOException ex) {
16    System.out.println(ex);
17}

AES-verschl�sselte Archive dekomprimieren

 1try (FileInputStream fs = new FileInputStream(dataDir + "PasswordProtectWithAES256_in.zip")) {
 2    try (FileOutputStream extrahiert = new FileOutputStream(dataDir + "alice_aesextrahiert_out.txt")) {
 3        try (Archiv archive = new Archiv(fs)) {
 4            try (InputStream dekomprimiert = archive.getEntries().get(0).open("p@s$")) {
 5                byte[] b = new byte[8192];
 6                int bytesRead;
 7                while (0 < (bytesRead = decompressed.read(b, 0, b.length))) {
 8                    extrahiert.write(b, 0, bytesRead);
 9                }
10            }
11        }
12    }
13} catch (IOException ex) {
14    System.out.println(ex);
15}

AES-verschl�sseltes gespeichertes Archiv dekomprimieren

 1try (FileInputStream fs = new FileInputStream(dataDir + "StoreMutlipleFilesWithoutCompressionWithPassword_in.zip")) {
 2    try (FileOutputStream extracted = new FileOutputStream(dataDir + "alice_aesextracted_out.txt")) {
 3        ArchiveLoadOptions options = new ArchiveLoadOptions();
 4        options.setDecryptionPassword("p@s$");
 5        try (Archive archive = new Archive(fs, options)) {
 6            try (InputStream dekomprimiert = archive.getEntries().get(0).open()) {
 7                byte[] b = new byte[8192];
 8                int bytesRead;
 9                while (0 < (bytesRead = decompressed.read(b, 0, b.length))) {
10                    extrahiert.write(b, 0, bytesRead);
11                }
12            }
13        }
14    }
15} catch (IOException ex) {
16    System.out.println(ex);
17}

Verschl�sselten Ordner in Verzeichnis dekomprimieren

1try (FileInputStream zipFile = new FileInputStream(".\\all_corpus_encrypted.zip")) {
2    ArchiveLoadOptions options = new ArchiveLoadOptions();
3    options.setDecryptionPassword("p@s$");
4    new Archive(zipFile, options).extractToDirectory(".\\all_corpus_decrypted");
5} catch (IOException ex) {
6    System.out.println(ex);
7}

Archiv mit einzelner Datei dekomprimieren

 1try (FileInputStream fs = new FileInputStream(dataDir + "CompressedSingleFile.zip")) {
 2    try (Archiv archive = new Archiv(fs)) {
 3        int[] percentReady = new int[] {0};
 4        archive.getEntries().get(0).setExtractionProgressed(new Event<ProgressEventArgs>() {
 5            @Override
 6            public void invoke(Object sender, ProgressEventArgs progressEventArgs) {
 7                int percent = (int) ((100 * progressEventArgs.getProceededBytes()) / ((ArchiveEntry) sender).getUncompressedSize());
 8                if (Prozent > percentReady[0]) {
 9                    System.out.println(percent + "% dekomprimiert");
10                    percentReady[0] = percent;
11                }
12            }
13        });
14        archive.getEntries().get(0).extract(dataDir + "alice_extracted_out.txt");
15    }
16} catch (IOException ex) {
17    System.out.println(ex);
18}

Archiv mit mehreren Dateien dekomprimieren

 1try (FileInputStream fs = new FileInputStream(dataDir + "CompressedMultipleFiles.zip")) {
 2    StringBuilder sb = new StringBuilder("Die Eintr�ge sind: ");
 3    int[] percentReady = new int[] {0};
 4    ArchiveLoadOptions options = new ArchiveLoadOptions();
 5    options.setEntryListed(new Event<EntryEventArgs>() {
 6        @Override
 7        public void invoke(Object sender, EntryEventArgs entryEventArgs) {
 8            sb.append(entryEventArgs.getEntry().getName()).append(", ");
 9        }
10    });
11    options.setEntryExtractionProgressed(new Event<ProgressEventArgs>() {
12        @Override
13        public void invoke(Object sender, ProgressEventArgs progressEventArgs) {
14            int percent = (int) ((100 * progressEventArgs.getProceededBytes()) / ((ArchiveEntry) sender).getUncompressedSize());
15            if (Prozent > percentReady[0]) {
16                System.out.println(percent + "% komprimiert");
17                percentReady[0] = percent;
18            }
19        }
20    });
21    try (Archive archive = new Archive(fs, options)) {
22        System.out.println(sb.substring(0, sb.length() - 2));
23        try (FileOutputStream extrahiert = new FileOutputStream(dataDir + "alice_extrahiert_out.txt")) {
24            try (InputStream dekomprimiert = archive.getEntries().get(0).open()) {
25                byte[] buffer = new byte[8192];
26                int bytesRead;
27                while (0 < (bytesRead = decompressed.read(buffer, 0, buffer.length))) {
28                    extrahiert.write(buffer, 0, bytesRead);
29                }
30                // Lesen vom dekomprimierten Stream in die extrahierte Datei.
31            }
32        }
33        percentReady[0] = 0;
34        archive.getEntries().get(1).extract(dataDir + "asyoulik_extracted_out.txt");
35    }
36} catch (IOException ex) {
37    System.out.println(ex);
38}

Gespeichertes Archiv ohne Komprimierung extrahieren

 1try (FileInputStream zipFile = new FileInputStream(dataDir + "StoreMultipleFilesWithoutCompression.zip")) {
 2    try (Archiv archive = new Archive(zipFile)) {
 3        try (FileOutputStream extracted = new FileOutputStream(dataDir + "alice_extracted_store_out.txt")) {
 4            try (InputStream dekomprimiert = archive.getEntries().get(0).open()) {
 5                byte[] buffer = new byte[8192];
 6                int bytesRead;
 7                while (0 < (bytesRead = decompressed.read(buffer, 0, buffer.length))) {
 8                    extrahiert.write(buffer, 0, bytesRead);
 9                }
10                // Lesen vom dekomprimierten Stream in die extrahierte Datei.
11            }
12        }
13        try (FileOutputStream extracted = new FileOutputStream(dataDir + "asyoulik_extracted_store_out.txt")) {
14            try (InputStream dekomprimiert = archive.getEntries().get(1).open()) {
15                byte[] buffer = new byte[8192];
16                int bytesRead;
17                while (0 < (bytesRead = decompressed.read(buffer, 0, buffer.length))) {
18                    extrahiert.write(buffer, 0, bytesRead);
19                }
20                // Lesen vom dekomprimierten Stream in die extrahierte Datei.
21            }
22        }
23    }
24} catch (IOException ex) {
25    System.out.println(ex);
26}
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.