Захист паролів архівів
Contents
[
Hide
Show
]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}