Passwortgeschützte Archive

Mit der Aspose.ZIP-API können Sie Dateien in C# oder einer beliebigen .NET-Sprache komprimieren und dekomprimieren, ohne sich Gedanken über die zugrunde liegende Dateistruktur machen zu müssen. Dieser Artikel enthält Beispiele für die Implementierung des Passwortschutzes sowohl mit herkömmlichen als auch mit AES-Verschlüsselungsschemata. Darüber hinaus wird gezeigt, wie Sie mit Verzeichnissen arbeiten und mehrere Dateien mithilfe gemischter Verschlüsselungstechniken komprimieren.

Passwortschutz mit traditioneller Verschlüsselung

Aspose.ZIP ermöglicht den herkömmlichen Passwortschutz für komprimierte Dateien. Mit einem einfachen Passwort können Sie einzelne Dateien oder ganze Verzeichnisse innerhalb eines Archivs sichern und so sicherstellen, dass nur autorisierte Benutzer den Inhalt extrahieren können.

Dateien mit traditionellem Verschlüsselungsschema verschlüsseln

Verschlüsseln Sie Dateien mit einer einfacheren, herkömmlichen Verschlüsselungsmethode. Dieser Ansatz ermöglicht einen grundlegenden Passwortschutz von Archiven und stellt sicher, dass Dateien sicher komprimiert werden und gleichzeitig durch die Verwendung des richtigen Passworts zugänglich bleiben.

 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    }

Dateien mit AES-Verschlüsselung verschlüsseln

Aspose.ZIP für .NET bietet Verschlüsselungsfunktionen, die Ihnen helfen, vertrauliche Dateien in Archiven zu schützen. Die API unterstützt die AES-Verschlüsselung und bietet mehrere Schlüsselgrößen (128 Bit, 192 Bit und 256 Bit) für unterschiedliche Sicherheitsstufen. Mit diesen Verschlüsselungsmethoden können Sie sicherstellen, dass Ihre Daten gut geschützt und nur autorisierten Benutzern zugänglich sind.

Verschlüsselung von Dateien mit AES128

Aspose.ZIP für .NET bietet Verschlüsselungsfunktionen, die Ihnen helfen, vertrauliche Dateien in Archiven zu schützen. Die API unterstützt die AES-Verschlüsselung und bietet mehrere Schlüsselgrößen (128 Bit, 192 Bit und 256 Bit) für unterschiedliche Sicherheitsstufen. Mit diesen Verschlüsselungsmethoden können Sie sicherstellen, dass Ihre Daten gut geschützt und nur autorisierten Benutzern zugänglich sind. Hier ist ein Beispiel dafür, wie es gemacht wird.

 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    }

Verschlüsselung von Dateien mit AES192

Die AES192-Verschlüsselung bietet im Vergleich zu AES128 ein höheres Maß an Sicherheit bei leicht erhöhtem Verschlüsselungsaufwand. Diese Methode eignet sich für Szenarien, in denen ein stärkerer Schutz erforderlich ist, ohne dass die Leistung zu stark beeinträchtigt wird. Sehen Sie sich das folgende Beispiel an, um die Verwendung zu verstehen.

 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    }

Verschlüsselung von Dateien mit AES256

AES256 ist die stärkste verfügbare Verschlüsselungsoption der AES-Familie und bietet maximale Sicherheit. Es ist ideal für den Schutz hochsensibler Daten, bei denen höchste Sicherheit erforderlich ist, auch wenn für die Ver- und Entschlüsselung mehr Rechenleistung erforderlich ist. Siehe das Beispiel unten.

 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    }

Passwortgeschütztes Verzeichnis

Neben der Verschlüsselung einzelner Dateien können Sie mit Aspose.ZIP auch ganze Verzeichnisse mit einem Passwort schützen. Dies ist besonders nützlich, wenn Sie mehrere Dateien gleichzeitig verschlüsseln müssen, um den gesamten Inhalt eines Verzeichnisses unter einem einzigen Passwort zu schützen.

 1// Vollständige Beispiele und Datendateien finden Sie unter https://github.com/aspose-zip/Aspose.ZIP-for-.NET
 2mit (FileStream zipFile = File.Open(".\\all_corpus_encrypted_out.zip", FileMode.Create))
 3{
 4    DirectoryInfo corpus = new DirectoryInfo(".\\CanterburyCorpus");
 5    using (var archive = new Archive(new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$"))))
 6    {
 7        archive.CreateEntries(corpus);
 8        archive.Save(zipFile);
 9    }
10}        

Mehrere Dateien mit gemischten Verschlüsselungstechniken verschlüsselnDie API unterstützt auch die Verwendung verschiedener Verschlüsselungstechniken innerhalb desselben Archivs. Dadurch können Sie je nach Sensibilitäts- und Sicherheitsanforderungen eine Mischung aus Verschlüsselungsalgorithmen wie AES und herkömmlichem Passwortschutz auf verschiedene Dateien anwenden. Diese Flexibilität ermöglicht eine detailliertere Kontrolle über den Dateischutz innerhalb eines Archivs. Schauen Sie sich dieses Beispiel an, um zu sehen, wie es in der Praxis funktioniert.

 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    }

Dekomprimierung passwortgeschützter Dateien

Nach dem Verschlüsseln von Archiven müssen Sie auch wissen, wie Sie Dateien bei Bedarf entschlüsseln und extrahieren. Aspose.ZIP vereinfacht die Dekomprimierung passwortgeschützter Archive, unabhängig davon, ob traditionelle oder AES-Verschlüsselung verwendet wurde. Sie können Dateien einzeln extrahieren oder ein gesamtes verschlüsseltes Verzeichnis dekomprimieren.

Dekomprimierung traditionell passwortgeschützter Archive

Extrahieren Sie ganz einfach Dateien, die mit einem herkömmlichen Passwort geschützt sind. Diese Methode verarbeitet Archive, die mit älteren Verschlüsselungstechniken gesichert sind, und stellt den Zugriff auf Ihre Daten sicher, sobald das richtige Passwort angegeben wird.

 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    }

Dekomprimieren Sie AES-verschlüsselte Archive

In diesem Abschnitt erfahren Sie, wie Sie mit AES, einem der sichersten Verschlüsselungsstandards, verschlüsselte Dateien extrahieren. Unabhängig davon, ob Sie mit AES128, AES192 oder AES256 arbeiten, ist der Extraktionsprozess unkompliziert, solange der richtige Entschlüsselungsschlüssel angegeben wird.

 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    }

Dekomprimieren Sie das mit AES verschlüsselte gespeicherte Archiv

Extrahieren Sie Dateien aus einem Archiv, das verschlüsselt und ohne Komprimierung gespeichert wurde. Dieser Prozess stellt sicher, dass auch unkomprimierte Dateien sicher bleiben und vertrauliche Daten geschützt werden, während die ursprüngliche Dateistruktur erhalten bleibt.

 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    }

Verschlüsselten Ordner in Verzeichnis dekomprimieren

Extrahieren Sie ganze verschlüsselte Verzeichnisse zurück in ihre ursprüngliche Ordnerstruktur. Dieser Prozess stellt alle Dateien aus dem verschlüsselten Archiv in einem angegebenen Verzeichnis wieder her und behält dabei ihre ursprüngliche Hierarchie und Sicherheit bei, sofern der richtige Entschlüsselungsschlüssel verwendet wird.

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    }

Archive dekomprimieren

Aspose.ZIP für .NET bietet eine benutzerfreundliche API zum Dekomprimieren von Archiven, unabhängig davon, ob sie eine einzelne Datei, mehrere Dateien oder sogar gespeicherte Dateien ohne Komprimierung enthalten. In diesem Abschnitt werden verschiedene Dekomprimierungsszenarien veranschaulicht und effiziente Lösungen zum Extrahieren Ihrer komprimierten Daten bereitgestellt.

Archiv mit einer einzelnen Datei dekomprimieren

In Szenarien, in denen ein Archiv nur eine Datei enthält, ist die Dekomprimierung unkompliziert. Mithilfe des nächsten Beispiels können Sie den Inhalt des Archivs schnell und mit minimalem Aufwand extrahieren und dabei die ursprüngliche Datenintegrität sicherstellen:

 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    }

Archiv mit mehreren Dateien dekomprimieren

Bei der Arbeit mit Archiven, die mehrere Dateien enthalten, vereinfacht unsere API den Prozess des Durchlaufens der Einträge und deren effizientes Extrahieren. Die ereignisbasierte Fortschrittsverfolgung während der Extraktion ist besonders hilfreich für die Überwachung großer Dekompressionsaufgaben.

 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    }

Gespeichertes Archiv ohne Komprimierung extrahieren

Gespeicherte Archive, die nicht komprimierte Dateien enthalten, werden ebenfalls von der Aspose.Zip-API unterstützt. Obwohl diese Archive die Dateigröße nicht verringern, ermöglichen sie einen schnellen Zugriff und eine effiziente Extraktion der gespeicherten Daten. Dies ist nützlich, wenn Sie Dateien zusammenpacken müssen, ohne ihre Struktur zu ändern.

 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    }

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.