Ringkasan

Aspose.ZIP memfasilitasi berbagai operasi enkripsi dan dekripsi untuk arsip. Menggunakan Aspose.Zip API untuk Python.NET, Anda dapat mengenkripsi dan mendekripsi arsip ZIP, RAR, dan 7-Zip secara efisien.

Enkripsi file ZIP

Dua teknik enkripsi dapat digunakan untuk arsip ZIP: metode tradisional yang lebih tua, yang sekarang dianggap kurang aman, dan enkripsi AES modern yang lebih kuat. Standar ZIP mengizinkan enkripsi entri individual dalam arsip yang sama menggunakan metode mana pun. Enkripsi AES, yang dikenal karena keamanannya yang lebih kuat, mendukung berbagai panjang kunci, termasuk 128-bit, 192-bit, dan 256-bit, menawarkan perlindungan yang lebih baik untuk data sensitif dalam arsip ZIP. Setiap entri dalam arsip yang sama mungkin dienkripsi dengan enkripsinya sendiri, sehingga Anda dapat menggabungkan jenis enkripsi berbeda dalam arsip yang sama.

Buka kunci ZIP dengan metode Deflate

    with open("archive.zip", 'x') as zip_file:
        with open("alice29.txt") as source:
            method =  zp.saving.CompressionSettings.deflate
            encryption = zp.saving.TraditionalEncryptionSettings("p@s$S")
            archive = zp.Archive(zp.saving.ArchiveEntrySettings(method, encryption))
            archive.create_entry("alice29.txt", source)
            archive.save(zip_file)

Kode tersebut membuat file ZIP baru bernama archive.zip, mengompres konten alice29.txt menggunakan metode kompresi Deflate, mengenkripsinya dengan metode enkripsi ZIP tradisional menggunakan kata sandi "p@s$S", dan menyimpan file yang dikompresi dan dienkripsi file ke arsip ZIP yang baru dibuat.

Enkripsi ZIP dengan AES

    with open("archive.zip", 'x') as zip_file:
        with open("alice29.txt") as source:
            method =  zp.saving.CompressionSettings.deflate
            encryption = zp.saving.AesEcryptionSettings("p@s$S", zp.saving.EncryptionMethod.AES256)
            archive = zp.Archive(zp.saving.ArchiveEntrySettings(method, encryption))
            archive.create_entry("alice29.txt", source)
            archive.save(zip_file)

Kode yang diberikan menunjukkan cara membuat arsip ZIP bernama archive.zip, mengompres file alice29.txt menggunakan metode kompresi Deflate, dan mengenkripsinya dengan enkripsi AES-256 menggunakan kata sandi "p@s$S". Untuk sampel ini, kami menyediakan instance EncryptionSetting dalam Konstruktor arsip yang sesuai . Dimungkinkan untuk menerapkan enkripsi untuk entri tertentu sehingga entri lainnya tidak terlindungi.
Ini menunjukkan fleksibilitas penerapan enkripsi pada entri tertentu dalam arsip ZIP, memungkinkan file berbeda memiliki tingkat perlindungan 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 entri kedua dari tiga

    with open("archive.zip", 'x') as zip_file:
        encrypted_entry = zp.saving.ArchiveEntrySettings(None, zp.saving.AesEcryptionSettings("p@s$", zp.saving.EncryptionMethod.AES256))
        with zp.Archive as archive:
            archive.create_entry("alice29.txt", "alice29.txt")
            archive.create_entry("asyoulik.txt", "asyoulik.txt", false, encrypted_entry)
            archive.create_entry("fields.c", "fields.c")
            archive.save(zip_file)

Kode ini menunjukkan pembuatan arsip ZIP yang dilindungi kata sandi dengan Python. Ia menambahkan tiga file: alice29.txt, asyoulik.txt, dan field.c.
Begini cara kerjanya:
Membuka atau membuat file untuk arsip ZIP berdasarkan nama yang disimpan di this.resultFile. Membuat objek FileInfo untuk mewakili file yang akan ditambahkan. Membuat objek arsip baru.
Menambahkan file: alice29.txt dan field.c ditambahkan ke arsip tanpa pengaturan khusus apa pun. asyoulik.txt ditambahkan dengan enkripsi AES-256, memerlukan kata sandi p@s$ untuk dekripsi. Menyimpan arsip yang sudah selesai ke file yang ditentukan.

Enkripsi ZIP dengan metode dan kata sandi yang berbeda

    with open("archive.zip", 'x') as zip_file:
        encrypted_1 = zp.saving.ArchiveEntrySettings(None, zp.saving.AesEcryptionSettings("p@s$1", zp.saving.EncryptionMethod.AES256))
        encrypted_2 = zp.saving.ArchiveEntrySettings(None, zp.saving.TraditionalEncryptionSettings("p@s$2"))
        encrypted_3 = zp.saving.ArchiveEntrySettings(None, zp.saving.AesEcryptionSettings("p@s$3", zp.saving.EncryptionMethod.AES128))
        with zp.Archive as archive:
            archive.create_entry("alice29.txt", "alice29.txt", false, encrypted_1)
            archive.create_entry ("asyoulik.txt", "asyoulik.txt", false, encrypted_2)
            archive.create_entry("fields.c", "fields.c", false, encrypted_3)
            archive.save(zip_file)

Cuplikan kode ini menunjukkan pembuatan arsip ZIP dengan Python di mana setiap file dienkripsi dengan metode dan kata sandi yang berbeda. Begini cara kerjanya:
Pengaturan File: Membuka atau membuat file untuk arsip ZIP berdasarkan nama yang disimpan di this.resultFile. Membuat objek FileInfo yang mewakili file yang akan ditambahkan: alice29.txt, asyoulik.txt, dan field.c.
Membuat Arsip: Membuat objek arsip baru (arsip).
Menambahkan File Terenkripsi: Kode menggunakan loop untuk mengulangi file dan menambahkannya ke arsip dengan pengaturan enkripsi spesifik:
alice29.txt - File ini ditambahkan dengan ** Enkripsi AES-256** dan memerlukan kata sandi "p@s" untuk dekripsi.
asyoulik.txt - File ini ditambahkan dengan metode enkripsi berbeda yang disebut Enkripsi Tradisional. Ia juga menggunakan kata sandi terpisah, "p@s", untuk dekripsi.
fields.c - File ini ditambahkan lagi dengan enkripsi AES-128, tetapi dengan kata sandi yang berbeda, "p@s$3", untuk dekripsi.
Menyimpan Arsip: Terakhir, kode menyimpan arsip lengkap yang berisi file terenkripsi ke file yang ditentukan.

Enkripsi Arsip ZIP dengan metode dan kata sandi yang berbeda

    with zp.Archive("plain.zip") as archive:
        save_options = zp.saving.ArchiveSaveOptions()
        save_options.encryption_options = zp.saving.AesEcryptionSettings("p@s$", zp.saving.EncryptionMethod.AES256)
        archive.save("encrypted.zip",  save_options)

Kode ini mengambil arsip ZIP yang ada plain.zip, mengenkripsi isinya menggunakan AES-256 dengan kata sandi p@s$, dan menyimpan versi terenkripsi sebagai arsip baru bernama encrypted.zip.

Dekripsi file ZIP

Dekripsi File ZIP Dengan Kata Sandi

    with zp.Archive("source.zip") as archive:
        archive.entries[0].extract("first_entry.bin", "p@s$")

Pengguna memiliki opsi untuk mendekripsi entri tertentu dalam arsip ZIP terenkripsi. Cuplikan kode ini menunjukkan pendekatan dasar untuk mendekripsi entri pertama dari arsip ZIP yang dilindungi kata sandi. Jika kata sandinya benar, arsip berhasil dibuka.

Dekripsi Seluruh File ZIP

    load_options = zp.ArchiveLoadOptions()
    load_options.decryption_password = "p@s$S"
    with zp.Archive("source.zip", load_options) as archive:
        archive.extract_to_directory("destination")

Kode sederhana ini mengambil arsip ZIP yang dilindungi kata sandi "source.zip", menggunakan kata sandi yang diberikan "p@s$S" untuk dekripsi, dan mengekstrak semua isinya ke folder "tujuan" yang ditentukan.

Dekripsi file 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

    load_options = zp.rar.RarArchiveLoadOptions()
    load_options.decryption_password = "p@s$S"
    with zp.rar.RarArchive("source.rar", load_options) as archive:
        archive.extract_to_directory("destination")

Pada dasarnya, kode ini berfungsi mirip dengan contoh ZIP tetapi bekerja secara khusus untuk arsip RAR. Dibutuhkan arsip RAR yang dilindungi kata sandi "source.rar", menggunakan kata sandi yang disediakan "p@s$S" untuk dekripsi, dan mengekstrak semua isinya ke folder "tujuan" yang ditentukan.

Dekripsi entri tertentu dari arsip RAR

    with zp.rar.RarArchive("source.rar") as archive:
        archive.entries[0].extract("first_entry.bin", "p@s$S")

Kode ini membuka arsip RAR source.rar, mendekripsi dan mengekstrak entri pertama arsip menggunakan kata sandi "p@s$S" dan menyimpannya ke file first_entry.bin. Contoh ini akan berfungsi jika hanya konten entri yang dienkripsi tetapi nama file tidak.

Dekripsi entri tertentu dari arsip RAR sebagai aliran

    with io.FileIO("file.bin", "xb") as destination:
        with zp.rar.RarArchive("source.rar") as archive:
            with archive.entries[0].open("p@s$S") as source:
                destination.write(source.readall())

Kode ini membuka arsip RAR source.rar, mendekripsi catatan kedua dari arsip menggunakan kata sandi "p@s$S", dan membaca isinya ke dalam ByteArrayOutputStream. Dengan menggunakan buffer baca, kode ini memastikan transfer data bertahap, yang membantu menangani file besar secara efisien. Contoh ini akan berfungsi jika hanya konten entri yang dienkripsi tetapi nama file tidak. Dalam contoh ini, byte entri disalin ke aliran memori.

Enkripsi 7zip dengan aes 256

Satu-satunya pilihan enkripsi arsip 7z adalah AES . Arsip ini menggunakan kompresi LZMA2 untuk pengurangan ukuran file yang efisien dan enkripsi AES dengan kata sandi untuk keamanan tambahan. Kode mengulangi file dan menambahkannya ke arsip menggunakan metode CreateEntry.

Enkripsi dan Kompres seluruh arsip 7zip

    with open("archive.7z", 'xb') as sz_file:
        compression = zp.saving.SevenZipLZMA2CompressionSettings()
        encryption = zp.saving.SevenZipAESEncryptionSettings("p@s$S")
        entry_settings = zp.saving.SevenZipEntrySettings(compression, encryption) 
        with zp.sevenzip.SevenZipArchive(entry_settings) as archive:
            archive.create_entry("alice29.txt", "alice29.txt")
            archive.create_entry("asyoulik.txt", "asyoulik.txt")
            archive.create_entry("fields.c", "fields.c")
            archive.save(sz_file)

Kode ini membuat arsip 7z terenkripsi yang berisi tiga file: alice29.txt, asyoulik.txt, dan field.c. Arsipnya menggunakan kompresi LZMA2 dan enkripsi AES dengan kata sandi "p@s$S". File ditambahkan ke arsip menggunakan metode CreateEntry, dan arsip itu sendiri disimpan ke file archive.7z yang dibuat.

7z Enkripsi dengan Kata Sandi

    with open("archive.7z", 'xb') as sz_file:
        compression = zp.saving.SevenZipLZMA2CompressionSettings()
        entry_pass1 = zp.saving.SevenZipEntrySettings(compression, zp.saving.SevenZipAESEncryptionSettings("p@s$S"))
        entry_pass2 = zp.saving.SevenZipEntrySettings(compression, zp.saving.SevenZipAESEncryptionSettings("$ecret"))
        with zp.sevenzip.SevenZipArchive(entry_settings) as archive:
            archive.create_entry("alice29.txt", "alice29.txt")
            archive.create_entry("asyoulik.txt", "asyoulik.txt", false, entry_pass1)
            archive.create_entry("fields.c", "fields.c", false, entry_pass2)
            archive.save(sz_file)

Kode ini membuat arsip 7z terenkripsi yang berisi tiga file: alice29.txt, asyoulik.txt, dan field.c. File pertama ditambahkan ke arsip tanpa pengaturan khusus. File kedua dilampirkan menggunakan kompresi LZMA2 dan enkripsi AES dengan kata sandi "p@s$S". File ketiga dilampirkan menggunakan kompresi LZMA2 dan enkripsi AES dengan kata sandi "$ecret". Terakhir, arsip disimpan ke file archive.7z.
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 instansiasi arsip .

Dekripsi file 7ZIP

Dekripsi arsip 7z dengan nama file terenkripsi

    with zp.sevenzip.SevenZipArchive("archive.7z", "p@s$S") as archive: 
        archive.extract_to_directory("c:\extracted")

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

Dekripsi entri tertentu 7zip

with zp.sevenzip.SevenZipArchive("archive.7z") as archive:
    archive.entries[0].extract("data.bin", "p@s$S")

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

Aspose.ZIP Lain yang Didukung untuk Fitur API Python.Net

Dengan pustaka Aspose.ZIP di Python.Net, Anda dapat menangani berbagai tugas yang terkait dengan dokumen file ZIP dengan lancar. Baik Anda perlu mengonversi format, menggabungkan file, mengedit konten, atau mengekstrak data, Aspose.ZIP menyediakan fungsionalitas komprehensif untuk menyederhanakan alur kerja Anda dan meningkatkan produktivitas.

  

Support and Learning Resources

  
  

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