Á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
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
- Learning Resources
- Documentation
- Source Code
- API References
- Tutorial Videos
- Product Support
- Free Support
- Paid Support
- Blog
- Release Notes
- Why Aspose.ZIP for Java?
- Customers List
- Success Stories