Übersicht

Datensicherheit ist in der heutigen digitalen Landschaft von größter Bedeutung, und eine wirksame Möglichkeit, vertrauliche Informationen zu schützen, ist die Verschlüsselung. In dieser Übersicht erfahren Sie, wie Sie ein gesamtes Archiv oder bestimmte darin enthaltene Einträge verschlüsseln oder entschlüsseln und so die Vertraulichkeit und Integrität Ihrer Daten gewährleisten. Aspose.ZIP ermöglicht eine Reihe von Vorgängen im Zusammenhang mit der Ver- und Entschlüsselung von Archiven.

So verschlüsseln oder entschlüsseln Sie das gesamte ZIP-Archiv

Verschlüsseln Sie das Zip-Archiv mit der herkömmlichen Methode

Für ZIP-Archive stehen zwei Verschlüsselungsmethoden zur Verfügung: das traditionelle, derzeit als schwach geltende, und das moderne AES. Der ZIP-Standard ermöglicht die Verschlüsselung jedes Eintrags mit einer dieser Methoden, sogar innerhalb desselben Archivs. Die AES-Verschlüsselung bietet höhere Sicherheit und ist in verschiedenen Schlüssellängen (128 Bit, 192 Bit und 256 Bit) verfügbar. Es bietet einen besseren Schutz für sensible Daten in ZIP-Archiven.

Mit Deflate komprimierte Dateien

    using (var zipFile = File.Open("archive.zip", FileMode.Create))
    {
        using (var source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
        {
            var archive = new Archive(new ArchiveEntrySettings(CompressionSettings.Deflate, new TraditionalEncryptionSettings("p@s$")));
            archive.CreateEntry("alice29.txt", source);
            archive.Save(zipFile);
        }
    }

Verschlüsselung des gesamten Archivs mit der AES-Methode

    using (var zipFile = File.Open("archive.zip", FileMode.Create))
    {
        using (var source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
        {
            using (var archive = new Archive(new ArchiveEntrySettings(CompressionSettings.Deflate, new AesEcryptionSettings("p@s$", EncryptionMethod.AES256))))
            {
                archive.CreateEntry("alice29.txt", source);
                archive.Save(zipFile);
            }
        }
    }

Diese Beispiele zeigen, wie EncryptionSetting Instanzen in den entsprechenden Archivkonstruktor eingebettet werden. Dies ermöglicht die selektive Verschlüsselung einzelner Einträge, während andere unverschlüsselt bleiben.

Verschlüsseln Sie den zweiten der drei Einträge im Zip-Archiv

    using (FileStream zipFile = File.Open(this.resultFile, FileMode.Create))
    {
        FileInfo source1 = new FileInfo("alice29.txt");
        FileInfo source2 = new FileInfo("asyoulik.txt");
        FileInfo source3 = new FileInfo("fields.c");

        using (var archive = new Archive())
        {
            archive.CreateEntry("alice29.txt", source1);
            archive.CreateEntry("asyoulik.txt", source2, false, new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES256)));
            archive.CreateEntry("fields.c", source3);
            archive.Save(zipFile);
        }
    }

Auch wenn es unkonventionell erscheint, ist es tatsächlich möglich, bestimmte Einträge in einem ZIP-Archiv mit verschiedenen Verschlüsselungsmethoden und Passwörtern zu verschlüsseln. Dieser Ansatz ermöglicht eine detailliertere und individuellere Sicherheitsstrategie, bei der einzelne Dateien oder Dateigruppen über unterschiedliche Schutzstufen verfügen können. Es ist jedoch wichtig zu beachten, dass diese Vorgehensweise den Verwaltungs- und Entschlüsselungsprozess erschweren kann und die Kompatibilität mit verschiedenen ZIP-Archivierungstools variieren kann.

Verschlüsseln Sie Zip mit verschiedenen Methoden und Passwörtern

    using (FileStream zipFile = File.Open(this.resultFile, FileMode.Create))
    {
        FileInfo source1 = new FileInfo("alice29.txt");
        FileInfo source2 = new FileInfo("asyoulik.txt");
        FileInfo source3 = new FileInfo("fields.c");

        using (var archive = new Archive())
        {
            archive.CreateEntry("alice29.txt", source1, false, new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$1", EncryptionMethod.AES256)));
            archive.CreateEntry("asyoulik.txt", source2, false, new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$2")));
            archive.CreateEntry("fields.c", source3, false, new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$3", EncryptionMethod.AES256)));
            archive.Save(zipFile);
        }
    }

Mit Aspose.ZIP können Sie einem vorhandenen Archiv eine Verschlüsselung hinzufügen, ohne den Inhalt vollständig neu zu packen. Es ist jedoch wichtig zu beachten, dass alle Einträge des Archivs ungeschützt sein müssen; andernfalls wird eine Ausnahme ausgelöst.

Vorhandenes ZIP-Archiv verschlüsseln

    using (var archive = new Archive("plain.zip"))
    {
        archive.Save("encrypted.zip", new ArchiveSaveOptions() 
        { 
            EncryptionOptions = new AesEcryptionSettings("p@s$", EncryptionMethod.AES256)
        });
    }

Entschlüsseln eines Zip-Archivs

Der Benutzer hat die Möglichkeit, entweder einen bestimmten Eintrag innerhalb des verschlüsselten ZIP-Archivs oder das gesamte Archiv als Ganzes zu entschlüsseln.

Bestimmten Eintrag entschlüsseln

    using (var zipFile = File.Open("archive.zip", FileMode.Create))
    {
        using (var source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
        {
            var archive = new Archive(new ArchiveEntrySettings(CompressionSettings.Deflate, new TraditionalEncryptionSettings("p@s$")));
            archive.CreateEntry("alice29.txt", source);
            archive.Save(zipFile);
        }
    }

Entschlüsseln Sie das gesamte Zip-Archiv

In diesem Fall müssen wir ein Passwort innerhalb eines Konstruktors bereitstellen.

    using (var zipFile = File.Open("archive.zip", FileMode.Create))
    {
        using (var source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
        {
            using (var archive = new Archive(new ArchiveEntrySettings(CompressionSettings.Deflate, new AesEcryptionSettings("p@s$", EncryptionMethod.AES256))))
            {
                archive.CreateEntry("alice29.txt", source);
                archive.Save(zipFile);
            }
        }
    }

So verschlüsseln oder entschlüsseln Sie ein RAR-Archiv

Entschlüsseln eines RAR-Archivs

Aspose.ZIP unterstützt nicht die Erstellung von RAR-Archiven, sondern nur die Extraktion. RAR-Archiv kann mit oder ohne Schutz der Dateinamen verschlüsselt werden.
Im ersteren Fall muss der Benutzer gleich zu Beginn der RAR-Archivinstanziierung ein Entschlüsselungskennwort in RarArchiveLoadOptions angeben. Im letzteren Fall ist es möglich, das Passwort später beim Extrahieren des Eintrags zu übergeben.

Entschlüsseln Sie das gesamte RAR-Archiv mit verschlüsselten Dateinamen

    using (RarArchive archive = new RarArchive("source.rar", 
    new RarArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
    {
        archive.ExtractToDirectory("destination");
    }

Entschlüsseln Sie einen bestimmten Eintrag aus dem RAR-Archiv

Dieses Beispiel würde funktionieren, wenn nur der Inhalt der Einträge verschlüsselt wird, die Dateinamen jedoch nicht.

    using (RarArchive archive = new RarArchive("source.rar"))
    {
        archive.Entries[0].Extract("first_entry.bin", "p@s$");
    }

Entschlüsseln Sie einen bestimmten Eintrag aus dem RAR-Archiv als Stream

Allerdings wird in diesem Beispiel davon ausgegangen, dass nur der Inhalt der Einträge verschlüsselt wird, nicht die Dateinamen . Dies erfordert das Kopieren von Eintragsbytes in einen Speicherstream.

    MemoryStream destination = new MemoryStream();
    using (RarArchive archive = new RarArchive("source.rar"))
    {
        using (var source = archive.Entries[1].Open("p@s$"))
        {
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0)
            {
                destination.Write(buffer, 0, bytesRead);
            }
        }
    }

So verschlüsseln oder entschlüsseln Sie das gesamte 7ZIP-Archiv

Methoden zum Verschlüsseln von 7z-Archivdateien

Die einzige Option der 7z-Archivverschlüsselung ist AES .

Verschlüsseln und komprimieren Sie das gesamte 7z-Archiv mit LZMA2

7Z-Archive unterstützen die Möglichkeit, jeden Eintrag mit einem eigenen Passwort zu verschlüsseln oder ungeschützt zu lassen.

    using (FileStream szFile = File.Open("archive.7z", FileMode.Create))
    {
        FileInfo source1 = new FileInfo("alice29.txt");
        FileInfo source2 = new FileInfo("asyoulik.txt");	
        FileInfo source3 = new FileInfo("fields.c");

        using (var archive = new SevenZipArchive(new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings(), new SevenZipAESEncryptionSettings("p@s$"))))
        {
            archive.CreateEntry("alice29.txt", source1);
            archive.CreateEntry("asyoulik.txt", source2);
            archive.CreateEntry("fields.c", source3);
            archive.Save(szFile);
        }
    }

Verschlüsseln Sie Einträge des 7z-Archivs mit eigenen Passwörtern und lassen Sie einen Eintrag unverschlüsselt

Ähnlich wie bei ZIP kann der Benutzer entweder das gesamte Archiv oder einen bestimmten Eintrag daraus entschlüsseln.
7Z-Archive können mit oder ohne Schutz der Dateinamen verschlüsselt werden. Wenn Dateinamen verschlüsselt sind, müssen Sie [bei der Archivinstanziierung] ein Passwort angeben ( https://reference.aspose.com/zip/net/aspose.zip.sevenzip/sevenziparchive/sevenziparchive/#sevenziparchive-constructor-2-of- 4).

    using (FileStream szFile = File.Open("archive.7z", FileMode.Create))
    {
        FileInfo source1 = new FileInfo("alice29.txt");
        FileInfo source2 = new FileInfo("asyoulik.txt");
        FileInfo source3 = new FileInfo("fields.c");

        using (var archive = new SevenZipArchive())
        {
            archive.CreateEntry("alice29.txt", source1);
            archive.CreateEntry("asyoulik.txt", source2, false, new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings(), new SevenZipAESEncryptionSettings("p@s$")));
            archive.CreateEntry("fields.c", source3, false, new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings(), new SevenZipAESEncryptionSettings("$ecret")));
            archive.Save(szFile);
        }
    }

Entschlüsseln Sie das gesamte Archiv mit verschlüsselten Dateinamen in ein Verzeichnis

Unabhängig davon, ob Dateinamen verschlüsselt sind oder nicht, ist es sicher, im Extraktionskonstruktor ein Kennwort anzugeben.
Das folgende Beispiel funktioniert nur, wenn nur Inhalte geschützt sind.

    using (SevenZipArchive archive = new SevenZipArchive("archive.7z", "p@s$")) 
    { 
        archive.ExtractToDirectory("C:\\extracted");
    }

Bestimmten Eintrag entschlüsseln

    using (SevenZipArchive archive = new SevenZipArchive("archive.7z"))
    {
        archive.Entries[0].Extract("data.bin", "p@s$");
    }

Weitere unterstützte Aspose.ZIP für .NET-API-Funktionen

Verwenden Sie die C#-Bibliothek Aspose.ZIP zum Konvertieren, Zusammenführen, Bearbeiten von Zip-Dateidokumenten, Extrahieren von Daten aus den Archiven und mehr!

  

Support and Learning Resources

  
  

Aspose.Zip offers individual archive processing APIs for other popular development environments, listed below: