Захист паролів архівів

Aspose.zip API дозволяє стиснути та декомпресувати файли в Java, не турбуючись про базову структуру файлів. Ця стаття показує роботу з одиночними, а також стисненням декількох файлів.

Стиснення архівів

Файли шифрують із традиційною схемою шифрування

1спробуйте (fileOutputStream Zipfile = новий FileOutputStream (DataDir + "CompressWithTraditionalEncryption_out.zip")) {
2    спробуйте (fileInputStream ourse1 = новий FileInputStream (DataDir + "alice29.txt")) {
3        Архів архів = новий архів (новий ArchiveEntrySettings (NULL, NEW TRALINALENCRYPTINGETTINGS ("P@S $")));
4        Archive.createEntry ("alice29.txt", джерело1);
5        Archive.save (Zipfile);
6    }
7} улов (IOException ex) {
8    System.out.println (ex);
9}

Шифрування файлів за допомогою шифрування AES

Шифрування файлів з AES128

1спробуйте (fileOutputStream Zipfile = новий FileOutputStream (DataDir + "PasswordProtectWithaes128_out.zip")) {
2    спробуйте (fileInputStream ourse1 = новий FileInputStream (DataDir + "alice29.txt")) {
3        Архів архів = новий архів (новий ArchiveEntrySettings (Null, New AesencryptionSettings ("P@S $", Шифтнатод.aes128)));
4        Archive.createEntry ("alice29.txt", джерело1);
5        Archive.save (Zipfile);
6    }
7} улов (IOException ex) {
8    System.out.println (ex);
9}

Шифрування файлів з AES192

1спробуйте (fileOutputStream Zipfile = новий FileOutputStream (DataDir + "PasswordProtectWithaes192_out.zip")) {
2    спробуйте (fileInputStream ourse1 = новий FileInputStream (DataDir + "alice29.txt")) {
3        Архів архів = новий архів (новий ArchiveEntrySettings (Null, New AesencryptionSettings ("P@s $", шифруваннямтод.aes192)));
4        Archive.createEntry ("alice29.txt", джерело1);
5        Archive.save (Zipfile);
6    }
7} улов (IOException ex) {
8    System.out.println (ex);
9}

Шифрування файлів з AES256

1спробуйте (fileOutputStream Zipfile = новий FileOutputStream (DataDir + "PasswordProtectWithaes256_out.zip")) {
2    спробуйте (fileInputStream ourse1 = новий FileInputStream (DataDir + "alice29.txt")) {
3        Архів архів = новий архів (новий ArchiveEntrySettings (Null, New AesencryptionSettings ("P@s $", шифруваннямтод.aes256)));
4        Archive.createEntry ("alice29.txt", джерело1);
5        Archive.save (Zipfile);
6    }
7} улов (IOException ex) {
8    System.out.println (ex);
9}

Каталог захисту пароля

1спробуйте (fileOutputStream Zipfile = новий FileOutputStream (". \\ all_corpus_encrypted_out.zip")) {
2    File corpus = новий файл (". \\ canterburycorpus");
3    спробуйте (Archive Archive = новий архів (новий ArchiveEntrySettings (NULL, NEW TRALIDANCRYPTIONSETTINGS ("P@S $"))) {
4        архів.createEntries (корпус);
5        Archive.save (Zipfile);
6    }
7} улов (IOException ex) {
8    System.out.println (ex);
9}

Шифрувати кілька файлів із змішаними методами шифрування

 1спробуйте (fileOutputStream Zipfile = новий FileOutputStream ("archive.zip")) {
 2    Файл fi1 = новий файл ("data1.bin");
 3    Файл fi2 = новий файл ("data2.bin");
 4    Файл fi3 = новий файл ("data3.bin");
 5    спробуйте (архів архів = новий архів ()) {
 6        Archive.CreateEntry ("entry1.bin", Fi1, False, New ArchiveEntrySettings (нові дефлатекомпресійніетки (), нові традиційні ретельні постановки ("pass1")));
 7        Archive.CreateEntry ("entry2.bin", Fi2, False, New ArchiveEntrySettings (нові deflateCompressionsettings (), нові asencryptionSettings ("pass2", шифруваннямтод.aes128)));
 8        Archive.CreateEntry ("entry3.bin", Fi3, False, New ArchiveEntrySettings (нові дефлатекомпресійніетки (), нові asencryptionSettings ("pass3", шифруванняметод.aes256)));
 9        Archive.save (Zipfile);
10    }
11} улов (IOException ігнорується) {
12}

Декомпресія архівів

Декомпресія традиційно захищених паролем архівів

 1спробуйте (fileInputStream fs = новий FileInputStream (DataDir + "CompressWithTraditionalEncryption_in.zip")) {
 2    спробуйте (fileOutputStream extreated = новий FileOutputStream (DataDir + "alice_extracted_out.txt") {
 3        Параметри ArchiveLoadoptions = нові архівелоадопції ();
 4        options.setDecryptionPassword ("p@s $");
 5        спробуйте (архів архів = новий архів (FS, параметри)) {
 6            спробуйте (inputStream decompressed = archive.getentries (). get (0) .open ()) {
 7                байт [] b = новий байт [8192];
 8                int bytesread;
 9                while (0 <(bytesread = decompressed.read (b, 0, b.length))) {
10                    витягнутий.write (b, 0, bytesread);
11                }
12            }
13        }
14    }
15} улов (IOException ex) {
16    System.out.println (ex);
17}

декомпресувати зашифровані архіви

 1спробуйте (fileInputStream fs = новий FileInputStream (DataDir + "PasswordProtectWithaes256_in.zip")) {
 2    спробуйте (FileOutputStream extreated = новий FileOutputStream (DataDir + "alice_aesextracted_out.txt")) {
 3        спробуйте (архів архів = новий архів (FS)) {
 4            спробуйте (InputStream decompressed = archive.getentries (). Get (0) .open ("p@s $")) {
 5                байт [] b = новий байт [8192];
 6                int bytesread;
 7                while (0 <(bytesread = decompressed.read (b, 0, b.length))) {
 8                    витягнутий.write (b, 0, bytesread);
 9                }
10            }
11        }
12    }
13} улов (IOException ex) {
14    System.out.println (ex);
15}

декомпресувати зашифровані AES зберігається архів

 1спробуйте (fileInputStream fs = новий FileInputStream (DataDir + "storemutliplefileswithOutCompressionWithPassword_in.zip") {
 2    спробуйте (FileOutputStream extreated = новий FileOutputStream (DataDir + "alice_aesextracted_out.txt")) {
 3        Параметри ArchiveLoadoptions = нові архівелоадопції ();
 4        options.setDecryptionPassword ("p@s $");
 5        спробуйте (архів архів = новий архів (FS, параметри)) {
 6            спробуйте (inputStream decompressed = archive.getentries (). get (0) .open ()) {
 7                байт [] b = новий байт [8192];
 8                int bytesread;
 9                while (0 <(bytesread = decompressed.read (b, 0, b.length))) {
10                    витягнутий.write (b, 0, bytesread);
11                }
12            }
13        }
14    }
15} улов (IOException ex) {
16    System.out.println (ex);
17}

Розкладіть зашифровану папку до каталогу

1спробуйте (fileInputStream Zipfile = новий FileInputStream (". \\ all_corpus_encrypted.zip")) {
2    Параметри ArchiveLoadoptions = нові архівелоадопції ();
3    options.setDecryptionPassword ("p@s $");
4    новий архів (Zipfile, параметри) .extracttodirectory (". \\ all_corpus_decrypted");
5} улов (IOException ex) {
6    System.out.println (ex);
7}

Покадати архів, що має один файл

 1спробуйте (fileInputStream fs = новий FileInputStream (DataDir + "CompressedSingleFile.zip")) {
 2    спробуйте (архів архів = новий архів (FS)) {
 3        int [] відсоток = новий int [] {0};
 4        archive.getentries (). Get (0) .setextractionProgress (Нова подія <PlasseventArgs> () {
 5            @Override
 6            public void App (відправник об'єктів, прогресевентаргс Progresseventargs) {
 7                int відсотків = (int) ((100 * progresseventargs.getproceededbytes ()) / ((архівевент) відправник) .getUncompressedSize ());
 8                if (відсоток> відсотків [0]) {
 9                    System.out.println (відсоток + "% декомпресії");
10                    відсоток [0] = відсоток;
11                }
12            }
13        });
14        archive.getentries (). get (0) .extract (DataDir + "alice_extracted_out.txt");
15    }
16} улов (IOException ex) {
17    System.out.println (ex);
18}

Покадати архів, що має кілька файлів

 1спробуйте (fileInputStream fs = новий FileInputStream (DataDir + "стисненняMultipleFiles.zip")) {
 2    StringBuilder SB = новий StringBuilder ("Записи:");
 3    int [] відсоток = новий int [] {0};
 4    Параметри ArchiveLoadoptions = нові архівелоадопції ();
 5    Options.setEntryListed (Нова подія <entryeventargs> () {
 6        @Override
 7        public void App (відправник об'єктів, entryeventargs entryeventargs) {
 8            sb.append (entryeventargs.getentry (). getName ()). Додатк (",");
 9        }
10    });
11    Options.setEntryExtractionProgress (Нова подія <ProgressEventArgs> () {
12        @Override
13        public void App (відправник об'єктів, прогресевентаргс Progresseventargs) {
14            int відсотків = (int) ((100 * progresseventargs.getproceededbytes ()) / ((архівевент) відправник) .getUncompressedSize ());
15            if (відсоток> відсотків [0]) {
16                System.out.println (відсоток + "% стисненого");
17                відсоток [0] = відсоток;
18            }
19        }
20    });
21    спробуйте (архів архів = новий архів (FS, параметри)) {
22        System.out.println (SB.Substring (0, SB.Length () - 2);
23        спробуйте (fileOutputStream extreated = новий FileOutputStream (DataDir + "alice_extracted_out.txt") {
24            спробуйте (inputStream decompressed = archive.getentries (). get (0) .open ()) {
25                байт [] буфер = новий байт [8192];
26                int bytesread;
27                while (0 <(bytesread = decompressed.read (буфер, 0, buffer.length)) {
28                    витягнутий.write (буфер, 0, bytesread);
29                }
30                // Прочитайте з декомпресованого потоку до вилучення файлу.
31            }
32        }
33        відсоток [0] = 0;
34        archive.getentries (). get (1) .extract (dataDir + "asyoulik_extracted_out.txt");
35    }
36} улов (IOException ex) {
37    System.out.println (ex);
38}

Екстракт зберігається архів без стиснення

 1спробуйте (fileInputStream Zipfile = новий FileInputStream (DataDir + "storeMultipleFilesWithoutCompression.zip") {
 2    спробуйте (архів архів = новий архів (Zipfile)) {
 3        спробуйте (FileOutputStream extreated = новий FileOutputStream (DataDir + "alice_extracted_store_out.txt")) {
 4            спробуйте (inputStream decompressed = archive.getentries (). get (0) .open ()) {
 5                байт [] буфер = новий байт [8192];
 6                int bytesread;
 7                while (0 <(bytesread = decompressed.read (буфер, 0, buffer.length)) {
 8                    витягнутий.write (буфер, 0, bytesread);
 9                }
10                // Прочитайте з декомпресованого потоку до вилучення файлу.
11            }
12        }
13        спробуйте (FileOutputStream extalted = новий FileOutputStream (DataDir + "asyoulik_extracted_store_out.txt")) {
14            спробуйте (inputStream декомпресований = archive.getentries (). get (1) .open ()) {
15                байт [] буфер = новий байт [8192];
16                int bytesread;
17                while (0 <(bytesread = decompressed.read (буфер, 0, buffer.length)) {
18                    витягнутий.write (буфер, 0, bytesread);
19                }
20                // Прочитайте з декомпресованого потоку до вилучення файлу.
21            }
22        }
23    }
24} улов (IOException ex) {
25    System.out.println (ex);
26}
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.