Áttekintés

Az Aspose.ZIP számos, az archívumok titkosításával és visszafejtésével kapcsolatos műveletet megkönnyít. Az Aspose.Zip API for Java segítségével gyorsan titkosíthatja és visszafejtheti a ZIP, RAR, 7-Zip archívumokat.

A ZIP fájlok titkosítása/dekódolása

A ZIP-archívumok számára két titkosítási módszer áll rendelkezésre: a hagyományos, ma már gyengének tekintett módszer és a modern AES módszer. A ZIP szabvány lehetővé teszi bármely bejegyzés titkosítását bármelyik módszerrel, még ugyanazon ZIP-archívumon belül is. Az AES titkosítás erősebb biztonságot kínál, és különböző kulcshosszúságokkal (128 bites, 192 bites és 256 bites) érhető el. Ez jobb védelmet biztosít a ZIP-archívumokban tárolt érzékeny adatok számára.

Titkosítsa a ZIP-t Deflate módszerrel

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

Ez a kód létrehoz egy "archive.zip" nevű ZIP archívumot a Deflate tömörítési módszerrel és a hagyományos ZIP titkosítással. Ezt úgy éri el, hogy először megnyit egy új kimeneti adatfolyamot az archívum számára a try FileOutputStream segítségével. A FileInputStream forrás az „alice29.txt” forrásfájl bemeneti adatfolyamaként szolgál, amely hozzáadásra kerül az archívumhoz. Ezután létrejön egy Archív objektum, amely meghatározza a tömörítési módszer és a hagyományos titkosítást is. A titkosításhoz használt jelszó "p@s$S" értékre van állítva. A catch utasítás kezeli a fájl- vagy archiválási műveletek során esetlegesen felmerülő kivételeket, és hibaüzenetet nyomtat a konzolra.

ZIP titkosítása AES módszerrel

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

Ez a kód egy "archive.zip" nevű ZIP-archívumot hoz létre a Deflate tömörítési módszerrel, és titkosítja az adatokat az erős AES-256 algoritmussal.
Ezekhez a mintákhoz biztosítottuk a EncryptionSetting példányait a megfelelő Archívum-konstruktoron . Lehetőség van titkosítás alkalmazására egy adott bejegyzéshez, így a többi védelem nélkül marad.

A ZIP titkosítási algoritmus használatával titkosítsa a háromból a második bejegyzést

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

Ez a kód egy ZIP archívum létrehozását mutatja be három bemeneti fájllal: „alice29.txt”, „asyoulik.txt” és „fields.c”. Egyedülálló módon az első és az utolsó fájl titkosítás nélkül kerül hozzáadásra, míg a második fájl, az "asyoulik.txt" jelszóval védett AES-256 titkosítással a "p@s$S" jelszóval.
A szelektív titkosításnak ez a megközelítése fájlok a ZIP-archívumban nem gyakoriak. Az Aspose.Zip API for Java azonban lehetőséget biztosít bizonyos bejegyzések titkosítására a ZIP-archívumban különböző titkosítási módszerek és jelszavak használatával. Ez ugyan növeli az adatbiztonságot, de bonyolítja az archívumkezelés és a visszafejtés folyamatát

Titkosítsa a ZIP-t különböző módszerekkel és jelszavakkal

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

Ez a kód három titkosított fájlt tartalmazó ZIP-archívumot hoz létre: „alice29.txt”, „asyoulik.txt” és „fields.c”. Minden fájl különálló módszerrel van titkosítva.
Az első rész az előző kódpélda funkcionalitását tükrözi. A fő rész az archívumban való bejegyzések létrehozására összpontosít minden egyes fájlhoz. Ezek a bejegyzések a nevükre és a forrásfájljaikra hivatkoznak (Fájlobjektumok). A titkosítást különböző módszerekkel alkalmazzák:

  • "alice29.txt" : AES-256 titkosítás "p@s$S" jelszóval
  • "asyoulik.txt" : Hagyományos titkosítási módszer "p@s$D" jelszóval
  • "fields.c" : AES-256 titkosítás "p@s$F" jelszóval
Az utolsó rész menti az archívumot, és hibakezelést is tartalmaz, hogy értesítse Önt a folyamat során felmerülő problémákról.

Meglévő ZIP-archívum titkosítása

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

Ez a kód egy meglévő "plain.zip" archívumot vesz fel, AES titkosítást alkalmaz rá a "p@s$S" jelszóval, és új archívumként menti "encrypted.zip" néven.

A ZIP fájl visszafejtése jelszóval

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

Ez a kód kibontja az első bejegyzést a "source.zip" archívumból, és "first_entry.bin" nevű fájlként menti a "p@s$S" jelszóval.
A felhasználónak lehetősége van egy adott bejegyzés visszafejtésére a titkosított ZIP-archívumban vagy a teljes archívum egészében.

A teljes ZIP fájl visszafejtése

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

Ebben az esetben jelszót kell megadnunk egy konstruktoron belül.

RAR fájl titkosítása/dekódolása Java segítségével

Az Aspose.ZIP nem biztosít RAR-archívumok létrehozását. kizárólag az extrakciót támogatja. A RAR archívum titkosítható, a fájlnevek védelemmel vagy sem.
Az előbbi esetben a felhasználónak meg kell adnia a visszafejtési jelszót a RarArchiveLoadOptions objektumon belül a RAR archívum. Ez utóbbi esetben a jelszó megadása az egyes bejegyzések kinyerése során történhet.

RAR-fájl visszafejtése titkosított fájlnevekkel

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

Ez a kód visszafejti és kicsomagolja a "source.rar" archívum tartalmát a "destination" mappába. Ha az archívum titkosított, akkor a megadott visszafejtési jelszót használja.
Íme, hogyan működik:

  • Beállítások betöltése dekódolási jelszóval: Először létrehoz egy betöltési beállítási objektumot a RAR archívum a RarArchiveLoadOptions beállítási operátor használatával. Ezután beállítja az archívum visszafejtési jelszavát az options.setDecryptionPassword metódussal.
  • Titkosított archívum megnyitása: A következő sor megnyitja a "source.rar" archívumot olvasáshoz és szerkesztéshez. try-with-sources konstrukció. Megadja az opciós objektumot a visszafejtési jelszóval a titkosított archívumok kezeléséhez.
  • Archívum tartalmának kibontása: Végül az archive.extractToDirectory metódus kibontja a visszafejtett archívum tartalmát a "célállomásra". mappát.

Célzott visszafejtés RAR fájl

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

Ez a kódrészlet megpróbálja kibontani az első bejegyzést a "source.rar" RAR archívumból, és elmenteni "first_entry.bin" néven a "p@s$S" visszafejtési jelszó használatával, ha az archívum titkosított.

Adott RAR-bejegyzés tartalom visszafejtése (folyam)

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

Ez a kódrészlet egy adott bejegyzést céloz meg a RAR archívumban. Dekódolja a bejegyzés tartalmát, és közvetlenül a memóriába továbbítja, feltételezve, hogy csak a bejegyzés adatai vannak titkosítva, magukat a fájlneveket nem.
A kód működésének teljes leírása:

  • Memóriapuffer inicializálása : A rendszer létrehoz egy ByteArrayOutputStream nevű célhelyet, amely a memórián belüli pufferként szolgál a megcélzott bejegyzés dekódolt tartalmának tárolására.
  • Archívum- és bejegyzéshozzáférés: A kód egy próbálkozást használ -resources blokk a "source.rar" forrás RAR archívum megnyitásához. Egy másik próbálkozás az erőforrásokkal blokkon belül a második bejegyzés bemeneti adatfolyamát kéri le, és a „p@s$S” jelszó használatával dekódolja.
  • Dekódolás és adatfolyam: A visszafejtett bájtok a bemeneti adatfolyamból darabokban, puffer segítségével olvassák ki. Ezután minden darabot a rendszer a cél ByteArrayOutputStream-be ír, amíg az összes adatot fel nem dolgozzák.
  • Hibakezelés: A kód tartalmaz egy catch blokkot a kezeléshez minden lehetséges IO-kivétel, amely a visszafejtési vagy adatfolyam-továbbítási folyamat során merülhet fel. Ha hiba történik, a hibaüzenet a szabványos hibafolyamba kerül kinyomtatásra hibakeresési célból.

7-ZIP fájl titkosítása és visszafejtése Java segítségével

Az Aspose.ZIP for Java 24.4 verzióban valósul meg. Az egyetlen 7z archívum titkosítási lehetőség az AES.

7-Zip fájl titkosítása és tömörítése az LZMA2 segítségével

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

A 7Z archívum támogatja az egyes bejegyzések titkosítását saját jelszóval vagy védelem nélkül hagyását. Ez a kód egy új 7z archívumot hoz létre LZMA2 és AES tömörítéssel és titkosítással.

  • Fájl megnyitása: A FileStream egy új "archive.7z" nevű fájl megnyitására szolgál létrehozási módban.
  • Objektumok inicializálása: Három FileInfo objektum jön létre az „alice29.txt”, „asyoulik.txt” és „fields.c” fájlokhoz.
  • 7-zip fájl létrehozása: A SevenZipArchive objektum a következőkkel jön létre:
    - LZMA2 tömörítési beállítások.
    - AES-titkosítás beállítások a "p@s$S" jelszó használatával
  • Fájlok hozzáadása: A CreateEntry metódusok segítségével az egyes fájlokat különálló archívumból adják hozzá. forrás.
  • Az archívum mentése: Az archívum a Mentés módszerrel az szFile fájlfolyamba kerül mentésre.

Szelektív titkosítás a 7z archívumban

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

Ez a kód létrehoz egy 7z archívumot, amely három fájlt tartalmaz: "alice29.txt", "asyoulik.txt" és "fields.c". Az utóbbi két fájlt különböző jelszavakkal tömörítik és titkosítják.
Az előző kóddal ellentétben az archive.CreateEntry metódus használatos az archív objektumon az egyes fájlok bejegyzéseinek létrehozásához. Amikor létrehozza az "asyoulik.txt" bejegyzést a source2 FileInfo objektumból, a CreateEntry harmadik paramétere false-ra van állítva. Ez azt jelzi, hogy a negyedik paraméterben (a SevenZipEntrySettings objektumban) meghatározott egyéni tömörítési és titkosítási beállításokat fogják használni. Ebben az esetben a beállítások "Zip LZMA2" tömörítést és "Zip AES" titkosítást adnak meg a "p@s$S" jelszóval.
A ZIP-hez hasonlóan a felhasználó akár a teljes archívumot, akár egy bizonyos bejegyzést visszafejthet belőle.
[7Z archívum](/zip/hu/most-common-archives/what-is-7zip /) titkosítható fájlnevekkel vagy anélkül. Ha a fájlnevek titkosítottak, meg kell adnia a jelszót az archívum példányosításánál .

7z visszafejtés titkosított fájlnevekkel

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

Ez a kód egy „try-with-resources” blokkot használ az „archive.7z” nevű, „p@s$S” jelszóval védett 7z archívum megnyitásához. Ezután kibontja az archívum tartalmát a „C:\extracted” mappába.
Függetlenül attól, hogy a fájlnevek titkosítottak vagy sem, biztonságosan megadhat jelszót a kicsomagoló konstruktorban. Az alábbi minta csak akkor működik, ha csak a tartalom védett.

7z specifikus bejegyzés visszafejtése

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

Ez a kód egy „try-with-resources” blokkot használ az „archive.7z” nevű, „p@s$S” jelszóval védett 7z archívum megnyitásához. Ezután kibontja az archívum tartalmát a „C:\extracted” mappába.
Függetlenül attól, hogy a fájlnevek titkosítottak vagy sem, biztonságosan megadhat jelszót a kicsomagoló konstruktorban. Az alábbi minta csak akkor működik, ha csak a tartalom védett.

Egyéb támogatott Java tömörítési API

Használja az Aspose.ZIP Java könyvtárat a zip-fájlok konvertálásához, egyesítéséhez, szerkesztéséhez, adatok kinyeréséhez az archívumból és még sok máshoz!

  

Support and Learning Resources

  
  

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