Přehled

Zabezpečení dat je v dnešním digitálním prostředí prvořadé a jedním účinným způsobem ochrany citlivých informací je šifrování. Tento přehled vás provede šifrováním nebo dešifrováním celého archivu nebo konkrétních položek v něm a zajistí důvěrnost a integritu vašich dat. Aspose.ZIP usnadňuje řadu operací týkajících se šifrování a dešifrování archivů.

Jak zašifrovat nebo dešifrovat celý ZIP archiv

Šifrujte archiv ZIP tradiční metodou

Pro archiv ZIP jsou k dispozici dvě metody šifrování: tradiční, nyní považována za slabou, a moderní AES. Standard ZIP umožňuje zašifrovat jakýkoli záznam některou z těchto metod i v rámci stejného archivu. Šifrování AES nabízí silnější zabezpečení a je k dispozici v různých délkách klíče (128-bit, 192-bit a 256-bit). Poskytuje lepší ochranu citlivých dat v archivech ZIP.

Soubory komprimované pomocí 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);
        }
    }

Šifrování celého archivu metodou AES

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

Tyto ukázky ukazují, jak vložit instance EncryptionSetting do odpovídajícího konstruktoru archivu . To umožňuje selektivní šifrování jednotlivých záznamů, ostatní zůstávají nezašifrované.

Zašifrujte druhý záznam ze tří v archivu ZIP

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

I když se to může zdát nekonvenční, je skutečně možné zašifrovat konkrétní položky v archivu ZIP pomocí různých metod šifrování a hesel. Tento přístup umožňuje podrobnější a přizpůsobenou strategii zabezpečení, kde jednotlivé soubory nebo skupiny souborů mohou mít odlišné úrovně ochrany. Je však důležité poznamenat, že tento postup může komplikovat proces správy a dešifrování a kompatibilita s různými archivačními nástroji ZIP se může lišit.

Šifrujte Zip různými metodami a hesly

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

Aspose.ZIP umožňuje přidat šifrování do existujícího archivu bez úplného přebalení obsahu. Je však důležité poznamenat, že všechny položky archivu musí být nechráněné; jinak bude vyvolána výjimka.

Zašifrujte existující archiv ZIP

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

Dešifrování archivu ZIP

Uživatel má možnost dešifrovat buď konkrétní záznam v rámci šifrovaného ZIP archivu, nebo celý archiv jako celek.

Dešifrovat konkrétní záznam

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

Dešifrovat celý zip archiv

V tomto případě musíme zadat heslo v konstruktoru.

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

Jak šifrovat nebo dešifrovat archiv RAR

Dešifrování archivu RAR

Aspose.ZIP nepodporuje skládání RAR archivu, podporuje pouze extrakci. Archiv RAR lze šifrovat s nebo bez ochrany názvů souborů.
V prvním případě musí uživatel zadat heslo pro dešifrování v rámci RarArchiveLoadOptions na samém začátku vytváření instancí RAR archivu. V druhém případě je možné předat heslo později při extrakci záznamu.

Dešifrujte celý archiv RAR se zašifrovanými názvy souborů

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

Dešifrujte konkrétní položku z archivu RAR

Tento příklad by fungoval, pokud by byl zašifrován pouze obsah položek, ale nikoli názvy souborů.

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

Dešifrovat konkrétní položku z archivu RAR jako stream

V tomto příkladu se však předpokládá, že je zašifrován pouze obsah záznamů, nikoli názvy souborů . To vyžaduje zkopírování vstupních bajtů do paměťového proudu.

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

Jak zašifrovat nebo dešifrovat celý archiv 7ZIP

Metody šifrování archivních souborů 7z

Jedinou možností šifrování archivu 7z je AES .

Šifrujte a komprimujte pomocí LZMA2 celý 7z archiv

Archivy 7Z podporují možnost zašifrovat každý záznam vlastním heslem nebo nechat nechráněné.

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

Zašifrujte záznamy 7z archivu vlastními hesly a jeden záznam nechte nezašifrovaný

Podobně jako u ZIP může uživatel dešifrovat buď celý archiv, nebo z něj konkrétní záznam.
Archiv 7Z lze šifrovat s ochranou názvů souborů nebo bez nich. Pokud jsou názvy souborů zašifrovány, musíte zadat heslo při vytváření instance archivu .

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

Dešifrujte celý archiv se zašifrovanými názvy souborů do adresáře

Bez ohledu na to, zda jsou názvy souborů zašifrovány nebo ne, je bezpečné zadat heslo v konstruktoru extrahování.
Níže uvedená ukázka bude fungovat pouze v případě, že je chráněn pouze obsah.

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

Dešifrovat konkrétní záznam

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

Support and Learning Resources

  
  

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