अवलोकन

Aspose.ZIP अभिलेखागार के लिए एन्क्रिप्शन और डिक्रिप्शन संचालन की एक श्रृंखला की सुविधा प्रदान करता है। Python.NET के लिए Aspose.Zip API का उपयोग करके, आप ZIP, RAR और 7-ज़िप अभिलेखागार को कुशलतापूर्वक एन्क्रिप्ट और डिक्रिप्ट कर सकते हैं।

ज़िप फ़ाइलें एन्क्रिप्ट करें

ज़िप अभिलेखागार के लिए दो एन्क्रिप्शन तकनीकों का उपयोग किया जा सकता है: पुराना, जिसे अब कम सुरक्षित पारंपरिक तरीका माना जाता है, और अधिक मजबूत आधुनिक एईएस एन्क्रिप्शन। ज़िप मानक किसी भी विधि का उपयोग करके एक ही संग्रह के भीतर व्यक्तिगत प्रविष्टियों के एन्क्रिप्शन की अनुमति देता है। एईएस एन्क्रिप्शन, जो अपनी मजबूत सुरक्षा के लिए जाना जाता है, 128-बिट, 192-बिट और 256-बिट सहित विभिन्न कुंजी लंबाई का समर्थन करता है, जो ज़िप अभिलेखागार के भीतर संवेदनशील डेटा के लिए बढ़ी हुई सुरक्षा प्रदान करता है। एक ही संग्रह में प्रत्येक प्रविष्टि को स्वयं के एन्क्रिप्शन के साथ एन्क्रिप्ट किया जा सकता है, ताकि आप एक ही संग्रह में विभिन्न एन्क्रिप्शन प्रकारों को मिला सकें।

डिफ्लेट विधि से ज़िप अनलॉक करें

    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)

कोड Archive.zip नामक एक नई ज़िप फ़ाइल बनाता है, Deflate संपीड़न विधि का उपयोग करके alice29.txt की सामग्री को संपीड़ित करता है, इसे पासवर्ड "p@s$S" का उपयोग करके पारंपरिक ज़िप एन्क्रिप्शन विधि के साथ एन्क्रिप्ट करता है, और संपीड़ित और एन्क्रिप्टेड को बचाता है नव निर्मित ज़िप संग्रह में फ़ाइल।

एईएस के साथ ज़िप एन्क्रिप्ट करें

    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)

प्रदान किया गया कोड दर्शाता है कि Archive.zip नाम से एक ज़िप संग्रह कैसे बनाया जाए, Deflate संपीड़न विधि का उपयोग करके alice29.txt फ़ाइल को संपीड़ित किया जाए, और पासवर्ड "p@s$S" का उपयोग करके इसे AES-256 एन्क्रिप्शन के साथ एन्क्रिप्ट किया जाए। इन नमूनों के लिए हमने संबंधित आर्काइव कंस्ट्रक्टर के भीतर एन्क्रिप्शनसेटिंग के उदाहरण प्रदान किए हैं। . अन्य को असुरक्षित छोड़कर विशेष प्रविष्टि के लिए एन्क्रिप्शन लागू करना संभव है।
यह ज़िप संग्रह के भीतर विशिष्ट प्रविष्टियों पर एन्क्रिप्शन लागू करने के लचीलेपन को प्रदर्शित करता है, जिससे विभिन्न फ़ाइलों को सुरक्षा के अलग-अलग स्तर की अनुमति मिलती है। यह दृष्टिकोण अधिक विस्तृत और अनुकूलित सुरक्षा रणनीति की अनुमति देता है, जहां व्यक्तिगत फ़ाइलों या फ़ाइलों के समूहों में सुरक्षा के अलग-अलग स्तर हो सकते हैं। हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि यह अभ्यास प्रबंधन और डिक्रिप्शन प्रक्रिया को जटिल बना सकता है, और विभिन्न ज़िप संग्रह टूल के साथ संगतता भिन्न हो सकती है।

तीन में से दूसरी प्रविष्टि ज़िप को एन्क्रिप्ट करें

    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)

यह कोड पायथन में एक पासवर्ड-सुरक्षित ज़िप संग्रह बनाना दर्शाता है। यह तीन फ़ाइलें जोड़ता है: alice29.txt, asyoulik.txt, और field.c।
यहां बताया गया है कि यह कैसे काम करता है:
this.resultFile में संग्रहीत नाम के आधार पर ज़िप संग्रह के लिए एक फ़ाइल खोलता है या बनाता है। जोड़ी जाने वाली फ़ाइलों का प्रतिनिधित्व करने के लिए FileInfo ऑब्जेक्ट बनाता है। एक नया संग्रह ऑब्जेक्ट बनाता है।
फ़ाइलें जोड़ता है: alice29.txt और field.c को बिना किसी विशेष सेटिंग के संग्रह में जोड़ा जाता है। asyoulik.txt को AES-256 एन्क्रिप्शन के साथ जोड़ा गया है, डिक्रिप्शन के लिए पासवर्ड p@s$ की आवश्यकता होती है। पूर्ण संग्रह को निर्दिष्ट फ़ाइल में सहेजता है।

विभिन्न तरीकों और पासवर्ड के साथ ज़िप एन्क्रिप्ट करें

    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)

यह कोड स्निपेट पायथन में एक ज़िप संग्रह बनाने को दर्शाता है जहां अलग-अलग फ़ाइलों को विभिन्न तरीकों और पासवर्ड के साथ एन्क्रिप्ट किया जाता है। यहां बताया गया है कि यह कैसे काम करता है:
फ़ाइल सेटअप: this.resultFile में संग्रहीत नाम के आधार पर ज़िप संग्रह के लिए एक फ़ाइल खोलता है या बनाता है। जोड़े जाने वाली फ़ाइलों का प्रतिनिधित्व करने वाली FileInfo ऑब्जेक्ट बनाता है: alice29.txt, asyoulik.txt, और field.c।
संग्रह बनाना: एक नया संग्रह ऑब्जेक्ट (संग्रह) बनाता है।
एन्क्रिप्टेड फ़ाइलें जोड़ना: कोड फ़ाइलों के माध्यम से पुनरावृत्त करने और उन्हें विशिष्ट एन्क्रिप्शन सेटिंग्स के साथ संग्रह में जोड़ने के लिए एक लूप का उपयोग करता है:
alice29.txt - यह फ़ाइल ** के साथ जोड़ी गई है AES-256 एन्क्रिप्शन** और डिक्रिप्शन के लिए पासवर्ड "p@s" की आवश्यकता है।
asyoulik.txt - यह फ़ाइल पारंपरिक एन्क्रिप्शन नामक एक अलग एन्क्रिप्शन विधि के साथ जोड़ी गई है। यह डिक्रिप्शन के लिए एक अलग पासवर्ड, "p@s" का भी उपयोग करता है।
fields.c - यह फ़ाइल AES-128 एन्क्रिप्शन के साथ फिर से जोड़ी गई है, लेकिन डिक्रिप्शन के लिए एक अलग पासवर्ड, "p@s$3" के साथ।
संग्रह को सहेजना: अंत में, कोड एन्क्रिप्टेड फ़ाइलों वाले पूर्ण संग्रह को निर्दिष्ट फ़ाइल में सहेजता है।

विभिन्न तरीकों और पासवर्ड के साथ ज़िप संग्रह को एन्क्रिप्ट करें

    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)

यह कोड एक मौजूदा ज़िप संग्रह plain.zip लेता है, पासवर्ड p@s$ के साथ AES-256 का उपयोग करके इसकी सामग्री को एन्क्रिप्ट करता है, और एन्क्रिप्टेड संस्करण को encrypted.zip नामक एक नए संग्रह के रूप में सहेजता है।

ज़िप फ़ाइलों को डिक्रिप्ट करें

पासवर्ड के साथ ज़िप फ़ाइल को डिक्रिप्ट करें

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

उपयोगकर्ता के पास एन्क्रिप्टेड ज़िप संग्रह के भीतर किसी विशिष्ट प्रविष्टि को डिक्रिप्ट करने का विकल्प होता है। यह कोड स्निपेट पासवर्ड-संरक्षित ज़िप संग्रह से पहली प्रविष्टि को डिक्रिप्ट करने के लिए एक बुनियादी दृष्टिकोण प्रदर्शित करता है। यदि पासवर्ड सही है तो संग्रह सफलतापूर्वक खुल जाता है।

संपूर्ण ज़िप फ़ाइल को डिक्रिप्ट करें

    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")

यह सरल कोड एक पासवर्ड-संरक्षित ज़िप संग्रह "source.zip" लेता है, डिक्रिप्शन के लिए दिए गए पासवर्ड "p@s$S" का उपयोग करता है, और इसकी सभी सामग्री को एक निर्दिष्ट फ़ोल्डर "गंतव्य" में निकालता है।

RAR फ़ाइल को डिक्रिप्ट करें

Aspose.ZIP RAR संग्रह संरचना का समर्थन नहीं करता है, यह केवल निष्कर्षण का समर्थन करता है। RAR संग्रह को फ़ाइल नामों की सुरक्षा के साथ या उसके बिना एन्क्रिप्ट किया जा सकता है।
पहले मामले में उपयोगकर्ता को RAR संग्रह इंस्टेंटेशन की शुरुआत में ही RarArchiveLoadOptions के भीतर डिक्रिप्शन पासवर्ड प्रदान करना होगा। बाद वाले मामले में, बाद में प्रविष्टि निष्कर्षण पर पासवर्ड पास करना संभव है।

एन्क्रिप्टेड फ़ाइल नामों के साथ संपूर्ण RAR संग्रह को डिक्रिप्ट करें

    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")

अनिवार्य रूप से, यह कोड ज़िप उदाहरण के समान कार्य करता है लेकिन विशेष रूप से RAR अभिलेखागार के लिए काम करता है। यह एक पासवर्ड-संरक्षित RAR संग्रह "source.rar" लेता है, डिक्रिप्शन के लिए दिए गए पासवर्ड "p@s$S" का उपयोग करता है, और इसकी सभी सामग्री को एक निर्दिष्ट फ़ोल्डर "गंतव्य" में निकालता है।

RAR संग्रह से विशेष प्रविष्टि को डिक्रिप्ट करें

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

यह कोड source.rar RAR संग्रह को खोलता है, पासवर्ड "p@s$S" का उपयोग करके संग्रह की पहली प्रविष्टि को डिक्रिप्ट और निकालता है और इसेfirst_entry.bin फ़ाइल में सहेजता है। यह नमूना तब काम करेगा जब केवल प्रविष्टियों की सामग्री एन्क्रिप्ट की गई हो लेकिन फ़ाइल नाम एन्क्रिप्ट नहीं किए गए हों।

RAR संग्रह से विशेष प्रविष्टि को एक स्ट्रीम के रूप में डिक्रिप्ट करें

    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())

यह कोड RAR संग्रह source.rar को खोलता है, पासवर्ड "p@s$S" का उपयोग करके संग्रह के दूसरे रिकॉर्ड को डिक्रिप्ट करता है, और इसकी सामग्री को ByteArrayOutputStream में पढ़ता है। रीड बफ़र का उपयोग करके, कोड क्रमिक डेटा स्थानांतरण सुनिश्चित करता है, जो बड़ी फ़ाइलों को कुशलतापूर्वक संभालने में मदद करता है। यह नमूना तब काम करेगा जब केवल प्रविष्टियों की सामग्री एन्क्रिप्ट की गई हो लेकिन फ़ाइल नाम एन्क्रिप्ट नहीं किए गए हों। इस नमूने में प्रविष्टि बाइट्स को मेमोरी स्ट्रीम में कॉपी किया जा रहा है।

एईएस 256 के साथ 7ज़िप एन्क्रिप्शन

7z आर्काइव एन्क्रिप्शन का एकमात्र विकल्प AES है। संग्रह कुशल फ़ाइल आकार में कमी के लिए LZMA2 संपीड़न और अतिरिक्त सुरक्षा के लिए पासवर्ड के साथ AES एन्क्रिप्शन का उपयोग करता है। कोड फ़ाइलों के माध्यम से पुनरावृत्त होता है और CreateEntry विधि का उपयोग करके उन्हें संग्रह में जोड़ता है।

पूरे 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)

यह कोड एक एन्क्रिप्टेड 7z संग्रह बनाता है जिसमें तीन फ़ाइलें होती हैं: alice29.txt, asyoulik.txt, और field.c। संग्रह "p@s$S" पासवर्ड के साथ LZMA2 संपीड़न और AES एन्क्रिप्शन का उपयोग करता है। CreateEntry विधि का उपयोग करके फ़ाइलों को संग्रह में जोड़ा जाता है, और संग्रह स्वयं बनाई गई Archive.7z फ़ाइल में सहेजा जाता है।

7z पासवर्ड के साथ एन्क्रिप्ट करें

    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)

यह कोड एक एन्क्रिप्टेड 7z संग्रह बनाता है जिसमें तीन फ़ाइलें होती हैं: alice29.txt, asyoulik.txt, और field.c। पहली फ़ाइल को विशेष सेटिंग्स के बिना संग्रह में जोड़ा जाता है। दूसरी फ़ाइल LZMA2 संपीड़न और AES एन्क्रिप्शन का उपयोग करके पासवर्ड "p@s$S" के साथ संलग्न है। तीसरी फ़ाइल LZMA2 कम्प्रेशन और AES एन्क्रिप्शन का उपयोग करके पासवर्ड "$ecret" के साथ संलग्न है। अंत में, संग्रह को Archive.7z फ़ाइल में सहेजा जाता है।
ज़िप के समान, उपयोगकर्ता संपूर्ण संग्रह या उसमें से विशेष प्रविष्टि को डिक्रिप्ट कर सकता है। 7Z संग्रह को फ़ाइल नामों की सुरक्षा के साथ या उसके बिना एन्क्रिप्ट किया जा सकता है। यदि फ़ाइल नाम एन्क्रिप्ट किए गए हैं, तो आपको संग्रह इंस्टेंटिएशन पर पासवर्ड प्रदान करना होगा।.

7ZIP फ़ाइलों को डिक्रिप्ट करें

एन्क्रिप्टेड फ़ाइल नामों के साथ 7z संग्रह को डिक्रिप्ट करें

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

फ़ाइल नाम एन्क्रिप्टेड हैं या नहीं, एक्सट्रेक्टिंग कंस्ट्रक्टर के भीतर पासवर्ड प्रदान करना सुरक्षित है। नीचे दिया गया नमूना केवल तभी काम करेगा जब केवल सामग्री सुरक्षित होगी।

7zip विशेष प्रविष्टि को डिक्रिप्ट करें

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

फ़ाइल नाम एन्क्रिप्टेड हैं या नहीं, एक्सट्रेक्टिंग कंस्ट्रक्टर के भीतर पासवर्ड प्रदान करना सुरक्षित है। नीचे दिया गया नमूना केवल तभी काम करेगा जब केवल सामग्री सुरक्षित होगी।

Python.Net API सुविधाओं के लिए अन्य समर्थित Aspose.ZIP

Python.Net में Aspose.ZIP लाइब्रेरी के साथ, आप ZIP फ़ाइल दस्तावेज़ों से संबंधित विभिन्न कार्यों को सहजता से संभाल सकते हैं। चाहे आपको प्रारूप परिवर्तित करने, फ़ाइलों को मर्ज करने, सामग्री संपादित करने या डेटा निकालने की आवश्यकता हो, Aspose.ZIP आपके वर्कफ़्लो को सुव्यवस्थित करने और उत्पादकता बढ़ाने के लिए व्यापक कार्यक्षमता प्रदान करता है।

  
  

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