Overzicht

Gegevensbeveiliging is van cruciaal belang in het huidige digitale landschap, en een effectieve manier om gevoelige informatie te beschermen is door middel van encryptie. Dit overzicht begeleidt u bij het coderen of decoderen van een volledig archief of specifieke items daarin, waardoor de vertrouwelijkheid en integriteit van uw gegevens wordt gewaarborgd. Aspose.ZIP faciliteert een reeks bewerkingen met betrekking tot de encryptie en decryptie van archieven.

Hoe u het hele ZIP-archief kunt coderen of decoderen

Versleutel Zip-archief met traditionele methode

Er zijn twee versleutelingsmethoden beschikbaar voor ZIP-archief: traditioneel, dat nu als zwak wordt beschouwd, en moderne AES. Met de ZIP-standaard kan elk item met een van deze methoden worden gecodeerd, zelfs binnen hetzelfde archief. AES-codering biedt een sterkere beveiliging en is beschikbaar in verschillende sleutellengtes (128-bit, 192-bit en 256-bit). Het biedt een betere bescherming voor gevoelige gegevens binnen ZIP-archieven.

Bestanden gecomprimeerd met Deflate

    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);
        }
    }

Het hele archief coderen met de 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);
            }
        }
    }

Deze voorbeelden laten zien hoe u EncryptionSetting instanties kunt insluiten in de overeenkomstige Archive constructor . Dit maakt selectieve versleuteling van individuele vermeldingen mogelijk, waardoor andere niet-versleuteld blijven.

Codeer de tweede vermelding van de drie in Zip Archive

    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);
        }
    }

Hoewel het misschien onconventioneel lijkt, is het inderdaad haalbaar om specifieke vermeldingen in een ZIP-archief te versleutelen met behulp van verschillende versleutelingsmethoden en wachtwoorden. Deze aanpak maakt een meer gedetailleerde en op maat gemaakte beveiligingsstrategie mogelijk, waarbij individuele bestanden of groepen bestanden verschillende beschermingsniveaus kunnen hebben. Het is echter belangrijk op te merken dat deze praktijk het beheer- en decoderingsproces kan bemoeilijken, en dat de compatibiliteit met verschillende ZIP-archieftools kan variëren.

Versleutel Zip met verschillende methoden en wachtwoorden

    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);
        }
    }

Met Aspose.ZIP kunt u encryptie toevoegen aan een bestaand archief zonder de inhoud volledig opnieuw in te pakken. Het is echter belangrijk op te merken dat alle vermeldingen in het archief onbeschermd moeten zijn; anders wordt er een uitzondering gemaakt.

Versleutel het bestaande ZIP-archief

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

Een Zip-archief decoderen

De gebruiker heeft de mogelijkheid om een ​​specifiek item binnen het gecodeerde ZIP-archief of het hele archief als geheel te decoderen.

Decodeer een bepaald item

    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);
        }
    }

Decodeer het hele Zip-archief

In dit geval moeten we een wachtwoord opgeven binnen een constructor.

    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);
            }
        }
    }

Hoe u een RAR-archief kunt coderen of decoderen

Een RAR-archief decoderen

Aspose.ZIP ondersteunt geen RAR-archiefcompositie, het ondersteunt alleen extractie. RAR-archief kan worden gecodeerd met of zonder bescherming van bestandsnamen.
In het eerste geval moet de gebruiker het decoderingswachtwoord opgeven in RarArchiveLoadOptions helemaal aan het begin van de instantiatie van het RAR-archief. In het laatste geval is het mogelijk om het wachtwoord later bij de invoerextractie door te geven.

Decodeer het hele RAR-archief met gecodeerde bestandsnamen

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

Decodeer een bepaald item uit het RAR-archief

Dit voorbeeld zou werken als alleen de inhoud van de vermeldingen gecodeerd is, maar de bestandsnamen niet.

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

Decodeer een bepaald item uit het RAR-archief als een stream

In dit voorbeeld wordt er echter van uitgegaan dat alleen de inhoud van de vermeldingen wordt gecodeerd, en niet de bestandsnamen. . Dit maakt het kopiëren van invoerbytes naar een geheugenstroom noodzakelijk.

    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);
            }
        }
    }

Hoe u het hele 7ZIP-archief kunt coderen of decoderen

Methoden om 7z-archiefbestanden te coderen

De enige optie voor 7z-archiefversleuteling is AES .

Versleutel en comprimeer met het hele 7z-archief van LZMA2

7Z-archieven ondersteunen de mogelijkheid om elk item met een eigen wachtwoord te coderen of onbeschermd te laten.

    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);
        }
    }

Versleutel de vermeldingen van het 7z-archief met eigen wachtwoorden en laat één vermelding onversleuteld

Net als bij ZIP kan de gebruiker het hele archief of een bepaald item daaruit decoderen.
7Z-archief kan worden gecodeerd met of zonder bescherming van bestandsnamen. Als bestandsnamen gecodeerd zijn, moet u een wachtwoord opgeven bij archivering .

    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);
        }
    }

Decodeer het hele archief met gecodeerde bestandsnamen naar de map

Of bestandsnamen nu gecodeerd zijn of niet, het is veilig om een ​​wachtwoord op te geven binnen de uitpakkende constructor.
Het onderstaande voorbeeld werkt alleen als alleen de inhoud wordt beschermd.

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

Decodeer een bepaald item

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

Andere ondersteunde Aspose.ZIP voor .NET API-functies

Gebruik de Aspose.ZIP C#-bibliotheek om zip-bestandsdocumenten te converteren, samen te voegen, te bewerken, gegevens uit de archieven te extraheren en meer!

  

Support and Learning Resources

  
  

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