Overview

Aspose.ZIP, arşivlerin şifrelenmesi ve şifresinin çözülmesiyle ilgili bir dizi işlemi kolaylaştırır. Aspose.Zip API for Java’yı kullanarak ZIP, RAR, 7-Zip arşivlerini hızlı bir şekilde Şifreleyebilir ve Şifrelerini Çözebilirsiniz.

ZIP Dosyalarını Şifrele/Şifresini Çöz

ZIP arşivleri : için iki şifreleme yöntemi mevcuttur; artık zayıf kabul edilen geleneksel yöntem ve modern AES yöntemi. ZIP standardı, aynı ZIP arşivi içinde bile herhangi bir girişin her iki yöntemle de şifrelenmesine olanak tanır. AES şifrelemesi daha güçlü güvenlik sunar ve farklı anahtar uzunluklarında (128 bit, 192 bit ve 256 bit) mevcuttur. Bu, ZIP arşivlerinde saklanan hassas veriler için daha iyi koruma sağlar.

Bir ZIP'i Deflate yöntemiyle şifreleyin

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

Bu kod, Deflate sıkıştırma yöntemini ve geleneksel ZIP şifrelemesini kullanarak "archive.zip" adında bir ZIP arşivi oluşturur. Bunu ilk önce FileOutputStream komutunu kullanarak arşiv için yeni bir çıktı akışı açarak başarır. FileInputStream kaynağı Arşive eklenecek olan "alice29.txt" kaynak dosyası için giriş akışı görevi görür. Ardından, hem Deflate sıkıştırma yöntemini hem de geleneksel şifrelemeyi belirten bir Arşiv nesnesi oluşturulur. "p@s$S" olarak ayarlanır. catch ifadesi, dosya veya arşiv işlemleri sırasında ortaya çıkabilecek tüm istisnaları yönetir ve konsola bir hata mesajı yazdırır.

ZIP'i AES yöntemiyle şifrelemek

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

Bu kod, Deflate sıkıştırma yöntemini kullanarak "archive.zip" adında bir ZIP arşivi oluşturur ve verileri güçlü AES-256 algoritmasıyla şifreler.
Bu örnekler için örnekler sağladık karşılık gelen Arşiv oluşturucusu içindeki EncryptionSetting Diğerlerini korumasız bırakarak belirli bir girişe şifreleme uygulamak mümkündür.

ZIP şifreleme algoritmasını kullanarak üç girişin ikincisini şifreleyin

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

Bu kod, "alice29.txt", "asyoulik.txt" ve "fields.c" olmak üzere üç giriş dosyasıyla bir ZIP arşivi oluşturmayı gösterir. Benzersiz bir şekilde, ilk ve son dosyalar şifrelenmeden eklenirken, ikinci dosya olan "asyoulik.txt", "p@s$S" şifresi ile AES-256 şifrelemesi kullanılarak şifre korumalıdır.
ZIP arşivindeki dosyaları seçici olarak şifreleme yaklaşımı pek yaygın değildir. Ancak Java için Aspose.Zip API, farklı şifreleme yöntemleri ve parolalar kullanarak ZIP arşivindeki belirli girişleri şifreleme işlevi sağlar. güvenlik, ancak arşiv yönetimi ve şifre çözme sürecini karmaşıklaştırır

ZIP'i farklı yöntemler ve şifrelerle şifreleyin

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

Bu kod, şifrelenmiş üç dosya içeren bir ZIP arşivi oluşturur: "alice29.txt", "asyoulik.txt" ve "fields.c". Her dosya farklı bir yöntemle şifrelenir.
İlk bölüm, önceki kod örneğinin işlevselliğini yansıtır. Temel bölüm, her dosya için arşiv içinde girişler oluşturmaya odaklanır. Bu girişler, bunların adlarına ve kaynak dosyalarına (Dosya nesneleri) referans verir. Şifreleme :

  • "alice29.txt" "p@s$S" şifresi ile uygulanır.
  • "asyoulik.txt" : "p@s$D"
  • parolasıyla geleneksel şifreleme yöntemi 34;fields.c" "p@s$F"
şifresi ile AES-256 şifrelemesi İşlem sırasında herhangi bir sorun hakkında sizi bilgilendiririz.

Mevcut ZIP Arşivini Şifrele

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

Bu kod mevcut bir "plain.zip" arşivini alır, ona "p@s$S" şifresiyle AES şifrelemesi uygular ve onu & adında yeni bir arşiv olarak kaydeder. "şifrelenmiş.zip"

ZIP Dosyasının Şifresini Şifreyle Çöz

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

Bu kod, "source.zip" arşivinden ilk girişi çıkarır ve "p@s$S" şifresini kullanarak "first_entry.bin" adlı bir dosya olarak kaydeder.
Kullanıcı, şifrelenmiş ZIP ​​arşivindeki belirli bir girişin veya bir bütün olarak arşivin şifresini çözme seçeneğine sahiptir.

Tüm ZIP Dosyasının Şifresini Çöz

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

Bu durumda bir kurucu içerisinde şifre sağlamamız gerekiyor.

RAR Dosyasını Java ile Şifreleyin/Şifresini Çözün

Aspose.ZIP, RAR arşivleri oluşturmaya yönelik işlevsellik sağlamaz; yalnızca çıkarma işlemini destekler. Bir RAR arşivi, dosya adlarını koruma seçeneğiyle birlikte şifrelenebilir.
Önceki senaryoda, kullanıcının, başlatma sırasında RarArchiveLoadOptions nesnesi içinde şifre çözme şifresini sağlaması gerekir. RAR arşivi. İkinci durumda, bireysel girişlerin çıkarılması sırasında şifre sağlanabilir.

RAR dosyasının şifresini şifrelenmiş dosya adlarıyla çöz

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

Bu kod, "source.rar" arşivinin şifresini çözer ve içeriğini "hedef" klasörüne çıkarır. Arşiv şifrelenmişse, belirtilen şifre çözme şifresini kullanır.
Nasıl çalıştığını burada bulabilirsiniz:

  • Ayarları Şifre Çözme Parolasıyla Yükle: İlk olarak, RarArchiveLoadOptions seçenek operatörünü kullanarak RAR arşivi için bir yükleme ayarları nesnesi oluşturur. Daha sonra options.setDecryptionPassword yöntemini kullanarak arşivin şifre çözme şifresini belirler.
  • Şifrelenmiş Arşivi Aç: Sonraki satır "source.rar" açar. try-with-resources yapısını kullanarak okumak ve düzenlemek için arşiv, şifrelenmiş arşivleri işlemek için şifre çözme parolasını içeren seçenekler nesnesini belirtir.
  • Arşiv İçeriğini Çıkart: archive.extractToDirectory yöntemi, şifresi çözülmüş arşivin içeriğini "hedef" klasörüne çıkarır.

Hedefli Şifre Çözme RAR Dosyası

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

Bu kod parçacığı, "source.rar" RAR arşivinden ilk girişi çıkarmaya ve şifre çözme şifresini kullanarak "first_entry.bin" olarak kaydetmeye çalışır "P@s$S" eğer arşiv şifrelenmişse.

Belirli RAR Giriş İçeriğinin Şifresini Çözme (Akış)

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

Bu kod parçacığı bir RAR arşivi içindeki belirli bir girişi hedefler. Dosya adlarının değil, yalnızca giriş verilerinin şifrelendiğini varsayarak girişin içeriğinin şifresini çözer ve onu doğrudan belleğe aktarır.
Kodun ne olduğuna dair tam bir açıklama

  • Bellek Arabelleği Başlatma: Hedeflenen girişin şifresi çözülmüş içeriğini depolamak için bir bellek içi arabellek görevi görecek şekilde ByteArrayOutputStream adlı bir hedef oluşturulur.
  • Arşiv ve Giriş Erişimi: Kod, kaynak RAR arşivi "source.rar"’ı açmak için bir try-with-resources bloğunu kullanır. blok, ikinci giriş için bir giriş akışı alır ve "p@s$S" parolasını kullanarak şifresini çözer.
  • Şifre Çözme ve Akış: baytlar bir arabellek kullanılarak parçalar halinde giriş akışından okunur. Daha sonra her parça, tüm veriler işlenene kadar hedef ByteArrayOutputStream’e yazılır.
  • Hata İşleme: Şifre çözme veya akış işlemi sırasında ortaya çıkabilecek olası IOException’ları işlemek için catch bloğu. Bir hata oluşursa hata mesajı, hata ayıklama amacıyla standart hata akışına yazdırılır.

7-ZIP Dosyasını Java ile Şifreleyin ve Şifresini Çözün

Aspose.ZIP for Java 24.4 sürümünde uygulanacaktır. Tek 7z arşiv şifreleme seçeneği AES’tir.

7-Zip dosyasını LZMA2 ile şifreleyin ve sıkıştırı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$S"))))
        {
            archive.CreateEntry("alice29.txt", source1);
            archive.CreateEntry("asyoulik.txt", source2);
            archive.CreateEntry("fields.c", source3);
            archive.Save(szFile);
        }
    }

7Z arşivleri, her girişi kendi parolasıyla şifreleme veya korumasız bırakma özelliğini destekler. Bu kod, LZMA2 ve AES sıkıştırma ve şifrelemeyle yeni bir 7z arşivi oluşturur.

  • Dosya Açma: FileStream, oluşturma modunda "archive.7z" adlı yeni bir dosyayı açmak için kullanılır
  • Nesneleri Başlatma: "alice29.txt", "asyoulik.txt" ve "fields.c" dosyaları için
  • 7- oluşturuluyor. zip dosyası: SevenZipArchive nesnesi,:
    - LZMA2 sıkıştırma ayarlarıyla, "p@s$S& şifresi kullanılarak oluşturulur. #34;
  • Dosya Ekleme: CreateEntry yöntemleri, her dosyayı ayrı bir kaynaktan arşive eklemek için kullanılır. Arşiv**: Arşiv, Kaydet yöntemi kullanılarak szFile dosya akışına kaydedilir.

    7z Arşivinde Seçmeli Şifreleme

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

    Bu kod, "alice29.txt", "asyoulik.txt" ve "fields.c" olmak üzere üç dosya içeren bir 7z arşivi oluşturur. son iki dosya farklı şifreler kullanılarak sıkıştırılır ve şifrelenir.
    Önceki koddan farklı olarak, her dosya için giriş oluşturmak amacıyla arşiv nesnesinde archive.CreateEntry yöntemi kullanılır. source2.txt FileInfo nesnesindeki ye göre CreateEntry nin üçüncü parametresi false olarak ayarlanır. Bu, dördüncü parametrede (bir SevenZipEntrySettings nesnesi) tanımlanan özel sıkıştırma ve şifreleme ayarlarının kullanılacağını gösterir. Bu örnekte, ayarlar "Zip LZMA2" sıkıştırmasını ve "p@s$S" şifresiyle şifrelemeyi belirtir.
    ZIP’e benzer. kullanıcı arşivin tamamının veya içindeki belirli bir girişin şifresini çözebilir.
    7Z arşivi dosya adları korunarak veya korunmadan şifrelenebilir. şifrelenmişse, arşiv oluşturma sırasında şifre sağlamanız gerekir

    Şifreli Dosya Adlarıyla 7z Şifre Çözme

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

    Bu kod, "p@s$S" şifresiyle korunan "archive.7z" adlı 7z arşivini açmak için bir try-with-resources bloğunu kullanır. Daha sonra, arşivin içeriğini "C:\çıkarılan" klasörüne kopyalayın.
    Dosya adları şifrelenmiş olsun ya da olmasın, çıkarma yapıcısı içinde şifre sağlamak güvenlidir. yalnızca içerik korunmaktadır.

    7z’ye Özel Girişin Şifresi Çözülüyor

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

    Bu kod, "p@s$S" şifresiyle korunan "archive.7z" adlı 7z arşivini açmak için bir try-with-resources bloğunu kullanır. Daha sonra, arşivin içeriğini "C:\çıkarılan" klasörüne kopyalayın.
    Dosya adları şifrelenmiş olsun ya da olmasın, çıkarma yapıcısı içinde şifre sağlamak güvenlidir. yalnızca içerik korunmaktadır.

Java API için Desteklenen Diğer Aspose.ZIP Özellikleri

Java’daki Aspose.ZIP kitaplığıyla, ZIP dosyası belgeleriyle ilgili çeşitli görevleri sorunsuz bir şekilde gerçekleştirebilirsiniz. İster formatları dönüştürmeye, dosyaları birleştirmeye, içerikleri düzenlemeye veya veri çıkarmaya ihtiyacınız olsun, Aspose.ZIP, işlemlerinizi kolaylaştırmak için kapsamlı işlevsellik sağlar. iş akışını artırın ve üretkenliği artırın.

  

Support and Learning Resources

  
  

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