सिंहावलोकन

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

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

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

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

    try (FileOutputStream zipFile = new FileOutputStream("archive.zip")) {
        try (FileInputStream source = new FileInputStream("alice29.txt")) {
            Archive archive = new Archive(new ArchiveEntrySettings(CompressionSettings.getDeflate(), new TraditionalEncryptionSettings("p@s$S")));
            archive.createEntry("alice29.txt", source);
            archive.save(zipFile);
        }
    } catch (IOException ex) {
        System.err.println(ex.getMessage());
    }

यह कोड डिफ्लेट कम्प्रेशन विधि और पारंपरिक ज़िप एन्क्रिप्शन का उपयोग करके "आर्काइव.ज़िप" नामक एक ज़िप संग्रह बनाता है। यह पहले FileOutputStream का उपयोग करके संग्रह के लिए एक नई आउटपुट स्ट्रीम खोलकर इसे प्राप्त करता है। FileInputStream स्रोत स्रोत फ़ाइल "alice29.txt" के लिए इनपुट स्ट्रीम के रूप में कार्य करता है जिसे संग्रह में जोड़ा जाएगा। इसके बाद, एक आर्काइव ऑब्जेक्ट बनाया जाता है, जो डिफ्लेट संपीड़न विधि और पारंपरिक एन्क्रिप्शन दोनों को निर्दिष्ट करता है। एन्क्रिप्शन के लिए पासवर्ड "p@s$S" पर सेट है। कैच स्टेटमेंट फ़ाइल या संग्रह संचालन के दौरान उत्पन्न होने वाले किसी भी अपवाद को संभालता है, कंसोल पर एक त्रुटि संदेश प्रिंट करता है।

एईएस पद्धति से ज़िप एन्क्रिप्ट करना

    try (FileOutputStream zipFile = new FileOutputStream("archive.zip")) {
        try (FileInputStream source = new FileInputStream("alice29.txt")) {
            try (Archive archive = new Archive(new ArchiveEntrySettings(CompressionSettings.getDeflate(), new AesEncryptionSettings("p@s$S", EncryptionMethod.AES256)))) {
                archive.createEntry("alice29.txt", source);
                archive.save(zipFile);
            }
        }
    } catch (IOException ex) {
        System.err.println(ex.getMessage());
    }

यह कोड डिफ्लेट कम्प्रेशन विधि का उपयोग करके "आर्काइव.ज़िप" नामक एक ज़िप संग्रह बनाता है और मजबूत AES-256 एल्गोरिदम के साथ डेटा को एन्क्रिप्ट करता है।
इन नमूनों के लिए हमने संबंधित आर्काइव कंस्ट्रक्टर . अन्य को असुरक्षित छोड़कर विशेष प्रविष्टि के लिए एन्क्रिप्शन लागू करना संभव है।

ज़िप एन्क्रिप्शन एल्गोरिदम का उपयोग करके, तीन में से दूसरी प्रविष्टि को एन्क्रिप्ट करें

    try (FileOutputStream zipFile = new FileOutputStream("archive.zip")) {
        File source1 = new File("alice29.txt");
        File source2 = new File("asyoulik.txt");
        File source3 = new File("fields.c");

        try (Archive archive = new Archive()) {
            archive.createEntry("alice29.txt", source1);
            archive.createEntry("asyoulik.txt", source2, false, new ArchiveEntrySettings(null, new AesEncryptionSettings("p@s$S", EncryptionMethod.AES256)));
            archive.createEntry("fields.c", source3);
            archive.save(zipFile);
        }
    } catch (IOException ex) {
        System.err.println(ex.getMessage());
    }

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

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

    try (FileOutputStream zipFile = new FileOutputStream("archive.zip")) {
        File source1 = new File("alice29.txt");
        File source2 = new File("asyoulik.txt");
        File source3 = new File("fields.c");

        try (Archive archive = new Archive()) {
            archive.createEntry("alice29.txt", source1, false, new ArchiveEntrySettings(null, new AesEncryptionSettings("p@s$S", EncryptionMethod.AES256)));
            archive.createEntry("asyoulik.txt", source2, false, new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$D")));
            archive.createEntry("fields.c", source3, false, new ArchiveEntrySettings(null, new AesEncryptionSettings("p@s$F", EncryptionMethod.AES256)));
            archive.save(zipFile);
        }
    } catch (IOException ex) {
        System.err.println(ex.getMessage());
    }

यह कोड एक ज़िप संग्रह बनाता है जिसमें तीन एन्क्रिप्टेड फ़ाइलें होती हैं: "alice29.txt", "asyoulik.txt", और "fields.c"। प्रत्येक फ़ाइल को एक अलग विधि से एन्क्रिप्ट किया गया है।
पहला भाग पिछले कोड उदाहरण की कार्यक्षमता को दर्शाता है। मुख्य अनुभाग प्रत्येक फ़ाइल के लिए संग्रह के भीतर प्रविष्टियाँ बनाने पर केंद्रित है। ये प्रविष्टियाँ उनके नाम और स्रोत फ़ाइलों (फ़ाइल ऑब्जेक्ट) का संदर्भ देती हैं। एन्क्रिप्शन को अलग-अलग तरीकों से लागू किया जाता है:

  • "alice29.txt" AES-256 एन्क्रिप्शन पासवर्ड "p@s$S" के साथ
  • "asyoulik.txt" पारंपरिक पासवर्ड "p@s$D" के साथ एन्क्रिप्शन विधि
  • "fields.c" पासवर्ड "p@s$F" के साथ AES-256 एन्क्रिप्शन
अंतिम भाग संग्रह को सहेजता है और प्रक्रिया के दौरान किसी भी समस्या के बारे में आपको सूचित करने के लिए त्रुटि प्रबंधन शामिल करता है।

मौजूदा ज़िप संग्रह को एन्क्रिप्ट करें

    try (Archive archive = new Archive("plain.zip")) {
        ArchiveSaveOptions options = new ArchiveSaveOptions();
        options.setEncryptionOptions(new AesEncryptionSettings("p@s$S", EncryptionMethod.AES256));
        archive.save("encrypted.zip", options);
    }

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

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

    try (Archive archive = new Archive("source.zip")) {
        archive.getEntries().get(0).extract("first_entry.bin", "p@s$S");
    }

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

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

    ArchiveLoadOptions options = new ArchiveLoadOptions();
    options.setDecryptionPassword("p@s$S");
    try (Archive archive = new Archive("source.zip", options)) {
        archive.extractToDirectory("destination");
    }

इस मामले में हमें कंस्ट्रक्टर के भीतर पासवर्ड प्रदान करने की आवश्यकता है।

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

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

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

    RarArchiveLoadOptions options = new RarArchiveLoadOptions();
    options.setDecryptionPassword("p@s$S");
    try (RarArchive archive = new RarArchive("source.rar", options)) {
        archive.extractToDirectory("destination");
    }

यह कोड "source.rar" संग्रह की सामग्री को "गंतव्य" फ़ोल्डर में डिक्रिप्ट और निकालता है। यदि संग्रह एन्क्रिप्ट किया गया है, तो यह निर्दिष्ट डिक्रिप्शन पासवर्ड का उपयोग करता है। RarArchiveLoadOptions विकल्प ऑपरेटर का उपयोग करके RAR संग्रह। इसके बाद यह options.setDecryptionPassword विधि का उपयोग करके संग्रह के लिए डिक्रिप्शन पासवर्ड सेट करता है।

  • एन्क्रिप्टेड संग्रह खोलें: अगली पंक्ति पढ़ने और संपादन के लिए "source.rar" संग्रह को खोलती है संसाधनों के साथ प्रयास करें निर्माण। यह एन्क्रिप्टेड अभिलेखागार को संभालने के लिए डिक्रिप्शन पासवर्ड के साथ विकल्प ऑब्जेक्ट को निर्दिष्ट करता है।
  • संग्रह सामग्री निकालें: अंत में, archive.extractToDirectory विधि डिक्रिप्टेड संग्रह की सामग्री को "गंतव्य" पर निकालती है फ़ोल्डर.
  • लक्षित डिक्रिप्शन RAR फ़ाइल

        try (RarArchive archive = new RarArchive("source.rar")) {
            archive.getEntries().get(0).extract("first_entry.bin", "p@s$S");
        }
    

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

    विशिष्ट RAR प्रविष्टि सामग्री को डिक्रिप्ट करना (स्ट्रीम)

        ByteArrayOutputStream destination = new ByteArrayOutputStream();
        try (RarArchive archive = new RarArchive("source.rar")) {
            try (InputStream source = archive.getEntries().get(1).open("p@s$S")) {
                byte[] buffer = new byte[1024];
                int bytesRead;
                while ((bytesRead = source.read(buffer, 0, buffer.length)) > 0) {
                    destination.write(buffer, 0, bytesRead);
                }
            } catch (IOException ex) {
                System.err.println(ex.getMessage());
            }
        }
    

    यह कोड स्निपेट RAR संग्रह के भीतर एक विशिष्ट प्रविष्टि को लक्षित करता है। यह प्रविष्टि की सामग्री को डिक्रिप्ट करता है और इसे सीधे मेमोरी में स्ट्रीम करता है, यह मानते हुए कि केवल प्रविष्टि डेटा एन्क्रिप्ट किया गया है, फ़ाइल नाम नहीं।
    कोड क्या करता है इसका पूरा विवरण:

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

    जावा के साथ 7-ज़िप फ़ाइल को एन्क्रिप्ट और डिक्रिप्ट करें

    जावा 24.4 संस्करण के लिए Aspose.ZIP में लागू किया जाएगा। एकमात्र 7z संग्रह एन्क्रिप्शन विकल्प AES है।

    LZMA2 के साथ 7-ज़िप फ़ाइल को एन्क्रिप्ट और संपीड़ित करें

        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$S"))))
            {
                archive.CreateEntry("alice29.txt", source1);
                archive.CreateEntry("asyoulik.txt", source2);
                archive.CreateEntry("fields.c", source3);
                archive.Save(szFile);
            }
        }
    

    7Z अभिलेखागार प्रत्येक प्रविष्टि को अपने पासवर्ड से एन्क्रिप्ट करने या असुरक्षित छोड़ने की क्षमता का समर्थन करता है। यह कोड LZMA2 और AES संपीड़न और एन्क्रिप्शन के साथ एक नया 7z संग्रह बनाता है।

    • फ़ाइल खोलना: एक फ़ाइलस्ट्रीम का उपयोग निर्माण मोड में "archive.7z" नामक एक नई फ़ाइल खोलने के लिए किया जाता है।
    • ऑब्जेक्ट्स को आरंभ करना: "alice29.txt", "asyoulik.txt", और "fields.c" फ़ाइलों के लिए तीन FileInfo ऑब्जेक्ट बनाए गए हैं।
    • एक 7-ज़िप फ़ाइल बनाना: सेवेनज़िपआर्काइव ऑब्जेक्ट इसके साथ बनाया गया है:
      - LZMA2 संपीड़न सेटिंग्स।
      - AES एन्क्रिप्शन सेटिंग्स पासवर्ड "p@s$S" का उपयोग करके
    • फ़ाइलें जोड़ना: CreateEntry विधियों का उपयोग प्रत्येक फ़ाइल को एक अलग से संग्रह में जोड़ने के लिए किया जाता है स्रोत।
    • संग्रह को सहेजना: संग्रह को सेव विधि का उपयोग करके szFile फ़ाइल स्ट्रीम में सहेजा जाता है।

    7z पुरालेख में चयनात्मक एन्क्रिप्शन

        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$S")));
                archive.CreateEntry("fields.c", source3, false, new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings(), new SevenZipAESEncryptionSettings("$ecret")));
                archive.Save(szFile);
            }
        }
    

    यह कोड एक 7z संग्रह बनाता है जिसमें तीन फ़ाइलें होती हैं: "alice29.txt", "asyoulik.txt", और "fields.c"। बाद की दो फ़ाइलें अलग-अलग पासवर्ड का उपयोग करके संपीड़ित और एन्क्रिप्ट की गई हैं।
    पिछले कोड के विपरीत, प्रत्येक फ़ाइल के लिए प्रविष्टियाँ बनाने के लिए संग्रह ऑब्जेक्ट पर archive.CreateEntry विधि का उपयोग किया जाता है। source2 FileInfo ऑब्जेक्ट से "asyoulik.txt" के लिए प्रविष्टि बनाते समय, CreateEntry का तीसरा पैरामीटर false पर सेट होता है। यह इंगित करता है कि कस्टम संपीड़न और एन्क्रिप्शन सेटिंग्स का उपयोग किया जाएगा, जो चौथे पैरामीटर (एक सेवनज़िपएंट्रीसेटिंग्स ऑब्जेक्ट) में परिभाषित है। इस उदाहरण में, सेटिंग्स "ज़िप LZMA2" संपीड़न और "ज़िप एईएस" एन्क्रिप्शन को पासवर्ड "p@s$S" के साथ निर्दिष्ट करती हैं।
    ज़िप के समान, उपयोगकर्ता संपूर्ण संग्रह या उससे विशेष प्रविष्टि को डिक्रिप्ट कर सकता है।
    7Z संग्रह को सुरक्षा के साथ या उसके बिना एन्क्रिप्ट किया जा सकता है फ़ाइल नाम. यदि फ़ाइल नाम एन्क्रिप्ट किए गए हैं, तो आपको पासवर्ड प्रदान करना होगा संग्रह इंस्टेंटिएशन पर .

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

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

    यह कोड "p@s$S" पासवर्ड से संरक्षित "archive.7z" नामक 7z संग्रह को खोलने के लिए प्रयास-के-संसाधन ब्लॉक का उपयोग करता है। इसके बाद यह संग्रह की सामग्री को "C:\extracted" फ़ोल्डर में निकालता है।
    फ़ाइल नाम एन्क्रिप्टेड हैं या नहीं, एक्सट्रेक्टिंग कंस्ट्रक्टर के भीतर पासवर्ड प्रदान करना सुरक्षित है। नीचे दिया गया नमूना केवल तभी काम करेगा जब केवल सामग्री सुरक्षित होगी।

    7z विशिष्ट प्रविष्टि को डिक्रिप्ट करना

        try (SevenZipArchive archive = new SevenZipArchive("archive.7z")) {
            archive.getEntries().get(0).extract("data.bin", "p@s$S");
        }
    

    यह कोड "p@s$S" पासवर्ड से संरक्षित "archive.7z" नामक 7z संग्रह को खोलने के लिए प्रयास-के-संसाधन ब्लॉक का उपयोग करता है। इसके बाद यह संग्रह की सामग्री को "C:\extracted" फ़ोल्डर में निकालता है।
    फ़ाइल नाम एन्क्रिप्टेड हैं या नहीं, एक्सट्रेक्टिंग कंस्ट्रक्टर के भीतर पासवर्ड प्रदान करना सुरक्षित है। नीचे दिया गया नमूना केवल तभी काम करेगा जब केवल सामग्री सुरक्षित होगी।

    अन्य समर्थित जावा संपीड़न एपीआई

    ज़िप-फ़ाइल दस्तावेज़ों को परिवर्तित करने, मर्ज करने, संपादित करने, संग्रह से डेटा निकालने और बहुत कुछ करने के लिए Aspose.ZIP जावा लाइब्रेरी का उपयोग करें!

      

    Support and Learning Resources

      
      

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