Ulasan

Keamanan data adalah hal terpenting dalam lanskap digital saat ini, dan salah satu cara efektif untuk melindungi informasi sensitif adalah melalui enkripsi. Ikhtisar ini akan memandu Anda tentang cara mengenkripsi atau mendekripsi seluruh arsip atau entri tertentu di dalamnya, memastikan kerahasiaan dan integritas data Anda. Aspose.ZIP memfasilitasi berbagai operasi yang berkaitan dengan enkripsi dan dekripsi arsip.

Cara Mengenkripsi atau Mendekripsi seluruh Arsip ZIP

Enkripsi arsip Zip dengan metode tradisional

Ada dua metode enkripsi yang tersedia untuk arsip ZIP: tradisional, yang saat ini dianggap lemah, dan AES modern. Standar ZIP memungkinkan entri apa pun dienkripsi dengan salah satu metode ini bahkan dalam arsip yang sama. Enkripsi AES menawarkan keamanan yang lebih kuat dan tersedia dalam panjang kunci yang berbeda (128-bit, 192-bit, dan 256-bit). Ini memberikan perlindungan yang lebih baik untuk data sensitif dalam arsip ZIP.

File dikompres dengan 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);
        }
    }

Mengenkripsi seluruh arsip dengan metode 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);
            }
        }
    }

Contoh ini menunjukkan cara menyematkan instance EncryptionSetting di Konstruktor Arsip . Hal ini memungkinkan enkripsi selektif pada setiap entri, menjaga entri lainnya tidak terenkripsi.

Enkripsi entri kedua dari ketiganya di Arsip 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);
        }
    }

Meskipun mungkin tampak tidak lazim, mengenkripsi entri tertentu dalam arsip ZIP memang layak dilakukan menggunakan metode enkripsi dan kata sandi yang berbeda. Pendekatan ini memungkinkan strategi keamanan yang lebih terperinci dan disesuaikan, di mana file individual atau kelompok file dapat memiliki tingkat perlindungan yang berbeda. Namun, penting untuk dicatat bahwa praktik ini dapat mempersulit proses pengelolaan dan dekripsi, dan kompatibilitas dengan berbagai alat arsip ZIP dapat bervariasi.

Enkripsi Zip dengan metode dan kata sandi yang berbeda

    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 memungkinkan Anda menambahkan enkripsi ke arsip yang ada tanpa mengemas ulang konten sepenuhnya. Namun, penting untuk dicatat bahwa semua entri arsip harus tidak dilindungi; jika tidak, pengecualian akan dimunculkan.

Enkripsi arsip ZIP yang ada

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

Mendekripsi arsip Zip

Pengguna memiliki opsi untuk mendekripsi entri tertentu dalam arsip ZIP terenkripsi atau seluruh arsip secara keseluruhan.

Dekripsi entri tertentu

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

Dekripsi seluruh arsip Zip

Dalam hal ini kita perlu memberikan kata sandi dalam konstruktor.

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

Cara Mengenkripsi atau Mendekripsi Arsip RAR

Mendekripsi arsip RAR

Aspose.ZIP tidak mendukung komposisi arsip RAR, hanya mendukung ekstraksi. Arsip RAR dapat dienkripsi dengan atau tanpa melindungi nama file.
Dalam kasus sebelumnya, pengguna perlu memberikan kata sandi dekripsi dalam RarArchiveLoadOptions di awal pembuatan arsip RAR. Dalam kasus terakhir, dimungkinkan untuk memasukkan kata sandi nanti pada ekstraksi entri.

Dekripsi seluruh arsip RAR dengan nama file terenkripsi

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

Dekripsi entri tertentu dari arsip RAR

Contoh ini akan berfungsi jika hanya konten entri yang dienkripsi tetapi nama file tidak.

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

Dekripsi entri tertentu dari arsip RAR sebagai aliran

Namun, dalam contoh ini , asumsinya adalah hanya konten entri yang dienkripsi, bukan nama file . Ini memerlukan penyalinan byte entri ke aliran memori.

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

Cara Mengenkripsi atau Mendekripsi seluruh Arsip 7ZIP

Metode untuk Mengenkripsi File Arsip 7z

Satu-satunya pilihan enkripsi arsip 7z adalah AES .

Enkripsi dan kompres dengan seluruh arsip 7z LZMA2

Arsip 7Z mendukung kemampuan untuk mengenkripsi setiap entri dengan kata sandinya sendiri atau membiarkannya tidak terlindungi.

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

Enkripsi entri arsip 7z dengan kata sandi sendiri dan biarkan satu entri tidak terenkripsi

Mirip dengan ZIP, pengguna dapat mendekripsi seluruh arsip atau entri tertentu darinya.
Arsip 7Z dapat dienkripsi dengan atau tanpa melindungi nama file. Jika nama file dienkripsi, Anda perlu memberikan kata sandi pada pembuatan arsip .

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

Dekripsi seluruh arsip dengan nama file terenkripsi ke direktori

Apakah nama file dienkripsi atau tidak, aman untuk memberikan kata sandi dalam mengekstraksi konstruktor.
Contoh di bawah hanya akan berfungsi jika hanya konten yang dilindungi.

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

Dekripsi entri tertentu

    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: