Архіви із захистом пароля
API Aspose.ZIP дозволяє стискати та розпаковувати файли на C# або будь-якій мові .NET, не турбуючись про базову структуру файлу. У цій статті наведено приклади того, як застосувати захист паролем за допомогою традиційної схеми шифрування та схеми шифрування AES. Крім того, тут показано, як працювати з каталогами та стискати кілька файлів за допомогою змішаних методів шифрування.
Захист паролем із традиційним шифруванням
Aspose.ZIP забезпечує традиційний захист стиснутих файлів паролем. Використовуючи простий пароль, ви можете захистити окремі файли або цілі каталоги в архіві, гарантуючи, що лише авторизовані користувачі зможуть витягувати вміст.
Шифруйте файли за допомогою традиційної схеми шифрування
Шифруйте файли за допомогою простішого традиційного методу шифрування. Цей підхід забезпечує базовий захист архівів паролем, забезпечуючи надійне стиснення файлів, залишаючись доступними за допомогою правильного пароля.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream zipFile = File.Open(dataDir + "CompressWithTraditionalEncryption_out.zip", FileMode.Create))
3 {
4 using (FileStream source1 = File.Open(dataDir + "alice29.txt", FileMode.Open, FileAccess.Read))
5 {
6 var archive = new Archive(new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$")));
7 archive.CreateEntry("alice29.txt", source1);
8 archive.Save(zipFile);
9 }
10 }
Шифруйте файли за допомогою шифрування AES
Aspose.ZIP для .NET надає можливості шифрування, щоб допомогти вам захистити конфіденційні файли в архівах. API підтримує шифрування AES, пропонуючи кілька розмірів ключів (128-біт, 192-біт і 256-біт) для різних рівнів безпеки. За допомогою цих методів шифрування ви можете гарантувати, що ваші дані добре захищені та доступні лише авторизованим користувачам.
Шифрування файлів за допомогою AES128
Aspose.ZIP для .NET надає можливості шифрування, щоб допомогти вам захистити конфіденційні файли в архівах. API підтримує шифрування AES, пропонуючи кілька розмірів ключів (128-біт, 192-біт і 256-біт) для різних рівнів безпеки. За допомогою цих методів шифрування ви можете гарантувати, що ваші дані добре захищені та доступні лише авторизованим користувачам. Ось приклад того, як це робиться.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream zipFile = File.Open(dataDir + "PasswordProtectWithAES128_out.zip", FileMode.Create))
3 {
4 using (FileStream source1 = File.Open(dataDir + "alice29.txt", FileMode.Open, FileAccess.Read))
5 {
6 using (var archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128))))
7 {
8 archive.CreateEntry("alice29.txt", source1);
9 archive.Save(zipFile);
10 }
11 }
12 }
Шифрування файлів за допомогою AES192
Шифрування AES192 пропонує вищий рівень безпеки в порівнянні з AES128 із дещо збільшеними витратами на шифрування. Цей метод підходить для сценаріїв, де потрібен сильніший захист без великої шкоди для продуктивності. Перегляньте наступний приклад, щоб зрозуміти його використання.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream zipFile = File.Open(dataDir + "PasswordProtectWithAES192_out.zip", FileMode.Create))
3 {
4 using (FileStream source1 = File.Open(dataDir + "alice29.txt", FileMode.Open, FileAccess.Read))
5 {
6 using (var archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES192))))
7 {
8 archive.CreateEntry("alice29.txt", source1);
9 archive.Save(zipFile);
10 }
11 }
12 }
Шифрування файлів за допомогою AES256
AES256 — це найнадійніший варіант шифрування, доступний у сімействі AES, що забезпечує максимальний захист. Він ідеально підходить для захисту дуже конфіденційних даних, де потрібна максимальна безпека, навіть якщо для шифрування та дешифрування потрібна більша обчислювальна потужність. Дивіться приклад нижче.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream zipFile = File.Open(dataDir + "PasswordProtectWithAES256_out.zip", FileMode.Create))
3 {
4 using (FileStream source1 = File.Open(dataDir + "alice29.txt", FileMode.Open, FileAccess.Read))
5 {
6 using (var archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES256))))
7 {
8 archive.CreateEntry("alice29.txt", source1);
9 archive.Save(zipFile);
10 }
11 }
12 }
Каталог захисту паролем
Окрім шифрування окремих файлів, Aspose.ZIP дозволяє захищати паролем цілі каталоги. Це особливо корисно, коли потрібно зашифрувати кілька файлів одночасно, захищаючи весь вміст у каталозі одним паролем.
1// Щоб отримати повні приклади та файли даних, перейдіть за адресою https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2за допомогою (FileStream zipFile = File.Open(".\\all_corpus_encrypted_out.zip", FileMode.Create))
3{
4 DirectoryInfo corpus = new DirectoryInfo(".\\CanterburyCorpus");
5 використовуючи (var archive = new Archive(new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$"))))
6 {
7 archive.CreateEntries(corpus);
8 archive.Save(zipFile);
9 }
10}
Шифруйте декілька файлів за допомогою змішаних методів шифруванняAPI також підтримує використання різних методів шифрування в одному архіві. Це дозволяє застосовувати комбінацію алгоритмів шифрування, таких як AES і традиційний захист паролем, до різних файлів на основі їх вимог до конфіденційності та безпеки. Ця гнучкість дозволяє більш детально контролювати захист файлів в архіві. Подивіться на цей приклад, щоб побачити, як це працює на практиці.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream zipFile = File.Open(dataDir + "CompressWithTraditionalEncryption_out.zip", FileMode.Create))
3 {
4 using (FileStream source1 = File.Open(dataDir + "alice29.txt", FileMode.Open, FileAccess.Read))
5 {
6 var archive = new Archive(new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$")));
7 archive.CreateEntry("alice29.txt", source1);
8 archive.Save(zipFile);
9 }
10 }
Декомпресія захищених паролем файлів
Після шифрування архівів вам також потрібно буде знати, як розшифровувати та видобувати файли, коли це необхідно. Aspose.ZIP спрощує розпакування архівів, захищених паролем, незалежно від того, використовувалося традиційне шифрування чи шифрування AES. Ви можете розпакувати файли окремо або розпакувати цілий зашифрований каталог.
Декомпресія традиційно захищених паролем архівів
Легко видобувайте файли, захищені традиційним паролем. Цей метод обробляє архіви, захищені за допомогою старих методів шифрування, забезпечуючи доступ до ваших даних після введення правильного пароля.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream fs = File.OpenRead(dataDir + "CompressWithTraditionalEncryption_out.zip"))
3 {
4 using (var extracted = File.Create(dataDir + "alice_extracted_out.txt"))
5 {
6 using (Archive archive = new Archive(fs, new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
7 {
8 using (var decompressed = archive.Entries[0].Open())
9 {
10 byte[] b = new byte[8192];
11 int bytesRead;
12 while (0 < (bytesRead = decompressed.Read(b, 0, b.Length)))
13 {
14 extracted.Write(b, 0, bytesRead);
15 }
16 }
17 }
18 }
19 }
Розпакуйте зашифровані архіви AES
У цьому розділі описано, як видобувати файли, зашифровані за допомогою AES, одного з найбезпечніших стандартів шифрування. Незалежно від того, чи маєте ви справу з AES128, AES192 чи AES256, процес видобування буде простим, якщо надано правильний ключ розшифровки.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream fs = File.OpenRead(dataDir + "PasswordProtectWithAES256_out.zip"))
3 {
4 using (var extracted = File.Create(dataDir + "alice_aesextracted_out.txt"))
5 {
6 using (Archive archive = new Archive(fs))
7 {
8 using (var decompressed = archive.Entries[0].Open("p@s$"))
9 {
10 byte[] b = new byte[8192];
11 int bytesRead;
12 while (0 < (bytesRead = decompressed.Read(b, 0, b.Length)))
13 {
14 extracted.Write(b, 0, bytesRead);
15 }
16 }
17 }
18 }
19 }
Розпакуйте зашифрований збережений архів AES
Розпакуйте файли з архіву, який був зашифрований і збережений без стиснення. Цей процес гарантує, що навіть нестиснуті файли залишаються в безпеці, захищаючи конфіденційні дані, зберігаючи оригінальну файлову структуру.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream fs = File.OpenRead(dataDir + "StoreMutlipleFilesWithoutCompressionWithPassword_out.zip"))
3 {
4 using (var extracted = File.Create(dataDir + "alice_aesextracted_out.txt"))
5 {
6 using (Archive archive = new Archive(fs, new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
7 {
8 using (var decompressed = archive.Entries[0].Open())
9 {
10 byte[] b = new byte[8192];
11 int bytesRead;
12 while (0 < (bytesRead = decompressed.Read(b, 0, b.Length)))
13 {
14 extracted.Write(b, 0, bytesRead);
15 }
16 }
17 }
18 }
19 }
Розпакуйте зашифровану папку в каталог
Витягніть цілі зашифровані каталоги назад до їх початкової структури папок. Цей процес відновлює всі файли із зашифрованого архіву до вказаного каталогу, зберігаючи їх оригінальну ієрархію та безпеку, за умови використання правильного ключа розшифровки.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream zipFile = File.Open(".\\all_corpus_encrypted.zip", FileMode.Open))
3 {
4 new Archive(zipFile, new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }).ExtractToDirectory(".\\all_corpus_decrypted");
5 }
Розпакування архівів
Aspose.ZIP для .NET пропонує простий у використанні API для розпакування архівів, незалежно від того, чи містять вони один файл, кілька файлів або навіть збережені файли без стиснення. Цей розділ демонструє різні сценарії декомпресії, забезпечуючи ефективні рішення для вилучення ваших стислих даних.
Розпакуйте архів з одним файлом
У сценаріях, коли архів містить лише один файл, декомпресія проста. Ви можете швидко витягти вміст архіву з мінімальними витратами, забезпечуючи цілісність вихідних даних, використовуючи наступний приклад:
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream fs = File.OpenRead(dataDir + "CompressSingleFile_out.zip"))
3 {
4 using (Archive archive = new Archive(fs))
5 {
6 int percentReady = 0;
7 archive.Entries[0].ExtractionProgressed += (s, e) =>
8 {
9 int percent = (int)((100 * e.ProceededBytes) / ((ArchiveEntry)s).UncompressedSize);
10 if (percent > percentReady)
11 {
12 Console.WriteLine(string.Format("{0}% decompressed", percent));
13 percentReady = percent;
14 }
15 };
16 archive.Entries[0].Extract(dataDir + "alice_extracted_out.txt");
17 }
18 }
Розпакуйте архів із кількома файлами
Під час роботи з архівами, що містять кілька файлів, наш API спрощує процес ітерації записів і ефективного їх вилучення. Відстеження прогресу під час вилучення на основі подій особливо корисно для моніторингу великих завдань декомпресії.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream zipFile = File.Open(dataDir + "CompressMultipleFiles_out.zip", FileMode.Open))
3 {
4 StringBuilder sb = new StringBuilder("Entries are: ");
5 int percentReady = 0;
6 using (Archive archive = new Archive(zipFile,
7 new ArchiveLoadOptions()
8 {
9 EntryListed = (s, e) => { sb.AppendFormat("{0}, ", e.Entry.Name); },
10 EntryExtractionProgressed = (s, e) =>
11 {
12 int percent = (int)((100 * e.ProceededBytes) / ((ArchiveEntry)s).UncompressedSize);
13 if (percent > percentReady)
14 {
15 Console.WriteLine(string.Format("{0}% compressed", percent)); percentReady = percent;
16 }
17 }
18 }))
19 {
20 Console.WriteLine(sb.ToString(0, sb.Length - 2));
21 using (var extracted = File.Create(dataDir + "alice_extracted_out.txt"))
22 {
23 using (var decompressed = archive.Entries[0].Open())
24 {
25 byte[] buffer = new byte[8192];
26 int bytesRead;
27 while (0 < (bytesRead = decompressed.Read(buffer, 0, buffer.Length)))
28 {
29 extracted.Write(buffer, 0, bytesRead);
30 }
31 // Read from decompressed stream to extracting file.
32 }
33 }
34 percentReady = 0;
35 archive.Entries[1].Extract(dataDir + "asyoulik_extracted_out.txt");
36 }
37 }
Розпакуйте збережений архів без стиснення
Збережені архіви, які містять файли, які не були стиснені, також підтримуються Aspose.Zip API. Хоча ці архіви не зменшують розмір файлу, вони забезпечують швидкий доступ і ефективне вилучення збережених даних. Це корисно, коли вам потрібно упакувати файли разом, не змінюючи їхню структуру.
1 // For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
2 using (FileStream zipFile = File.Open(dataDir + "StoreMultipleFilesWithoutCompression_out.zip", FileMode.Open))
3 {
4 using (Archive archive = new Archive(zipFile))
5 {
6 using (var extracted = File.Create(dataDir + "alice_extracted_store_out.txt"))
7 {
8 using (var decompressed = archive.Entries[0].Open())
9 {
10 byte[] buffer = new byte[8192];
11 int bytesRead;
12 while (0 < (bytesRead = decompressed.Read(buffer, 0, buffer.Length)))
13 {
14 extracted.Write(buffer, 0, bytesRead);
15 }
16 // Read from decompressed stream to extracting file.
17 }
18 }
19
20 using (var extracted = File.Create(dataDir + "asyoulik_extracted_store_out.txt"))
21 {
22 using (var decompressed = archive.Entries[1].Open())
23 {
24 byte[] buffer = new byte[8192];
25 int bytesRead;
26 while (0 < (bytesRead = decompressed.Read(buffer, 0, buffer.Length)))
27 {
28 extracted.Write(buffer, 0, bytesRead);
29 }
30 // Read from decompressed stream to extracting file.
31 }
32 }
33 }
34 }