78 Stimmen

Empfehlungen für eine kostenlose Bibliothek, die zum Komprimieren von Dateien verwendet werden kann

Ich muss eine Datei zippen und mit einem Passwort schützen. Gibt es eine gute (kostenlose) Bibliothek für diese Aufgabe?

Diese muss von einem Dritten geöffnet werden, so dass der Passwortschutz mit Standardwerkzeugen funktionieren muss.

9 Stimmen

Wie konnte eine solch hilfreiche Frage geschlossen werden?

2 Stimmen

Denn Meta hat beschlossen, dass nützliche Fragen, die leicht zu Meinungsfragen werden könnten, nicht zu StackOverflow passen. Es ist traurig, aber wahr.

0 Stimmen

Zip4j unterstützt die Verschlüsselung der Dateiliste: stackoverflow.com/questions/15085249/

58voto

Matt Punkte 611

Sie können versuchen Zip4j , eine reine Java-Bibliothek zur Verarbeitung von Zip-Dateien. Sie unterstützt die Ver-/Entschlüsselung von PKWare- und AES-Verschlüsselungsmethoden.

Wesentliche Merkmale:

  • Erstellen, Hinzufügen, Extrahieren, Aktualisieren, Entfernen von Dateien aus einer Zip-Datei
  • Lesen/Schreiben von passwortgeschützten Zip-Dateien
  • Unterstützt AES 128/256 Verschlüsselung
  • Unterstützt Standard-Zip-Verschlüsselung
  • Unterstützt das Zip64-Format
  • Unterstützt die Komprimierungsmethoden Store (No Compression) und Deflate
  • Erstellen oder Extrahieren von Dateien aus geteilten Zip-Dateien (Beispiel: z01, z02,...zip)
  • Unterstützt Unicode-Dateinamen
  • Fortschrittsmonitor

Lizenz:

1 Stimmen

Und es funktioniert auch perfekt mit Android :) Große Bibliothek mit hervorragenden Beispielen +1!

5 Stimmen

Es sieht so aus, als ob Zip4j aufgegeben wird :-/

0 Stimmen

Funktioniert aber trotzdem.

38voto

JodaStephen Punkte 57302

UPDATE 2020: Es gibt jetzt andere Möglichkeiten, vor allem Zip4J .


Nach langem Suchen habe ich drei Ansätze gefunden:

Ein frei verfügbarer Satz von Quellcode, geeignet für eine einzelne Zip-Datei. Es gibt jedoch keine Lizenz. Die Verwendung ist AesZipOutputStream.zipAndEcrypt(...). http://merkert.de/de/info/zipaes/src.zip ( https://forums.oracle.com/forums/thread.jspa?threadID=1526137 )

UPDATE: Dieser Code steht jetzt unter Apache-Lizenz und ist veröffentlicht unter https://github.com/mobsandgeeks/winzipaes (exportiert aus der ursprünglichen Heimat unter Google-Code ) . Es hat bei mir funktioniert (eine Datei in der Zip-Datei) und füllt eine Lücke in den Open-Source-Bibliotheken von Java gut aus.

Ein kommerzielles Produkt ($500 zum Zeitpunkt der Erstellung dieses Artikels). Ich kann nicht überprüfen, ob es funktioniert, da der Ansatz der Testlizenz komplex ist. Es ist auch eine portierte .NET-App: http://www.nsoftware.com/ipworks/zip/default.aspx

Ein kommerzielles Produkt ($290 zum Zeitpunkt der Erstellung dieses Artikels). Nur für Wnidows geeignet, da es eine DLL verwendet: http://www.example-code.com/java/zip.asp

0 Stimmen

Hat jemand einen Link, wie man den winzipaes-Code verwendet, der in diesem Link angegeben ist? Ich muss mehr als eine Datei hinzufügen und könnte etwas Hilfe gebrauchen, um zu verstehen, wie man ihn verwendet.

0 Stimmen

@frak Schauen Sie sich den Quellcode von AesFileEncrypter an: Sie müssen nur eine Instanz dieser Klasse erstellen und ihr dann hinzufügen, was Sie wollen.

1 Stimmen

Winzipaes ist über das Maven Repo verfügbar mvnrepository.com/artifact/de.idyl/winzipaes

13voto

Kevin Day Punkte 15662

Dies ist keine Antwort, aber ein Hinweis, den man bei der Bewertung möglicher Lösungen im Hinterkopf behalten sollte.

Ein sehr wichtiger Punkt bei der Zip-Verschlüsselung:

Es gibt verschiedene Arten der Zip-Verschlüsselung. Die alte Art (Teil des ursprünglichen Zip-Standards) ist es nicht wert, dass man sich damit beschäftigt (sie kann in weniger als 10 Minuten mit leicht im Internet erhältlichen Anwendungen geknackt werden).

Wenn Sie Zip-Dateien in irgendeiner Weise verschlüsseln wollen, achten Sie bitte darauf, dass Sie einen der starken Verschlüsselungsstandards verwenden (ich glaube, dass der 128- und 256-Bit-AES-Standard von WinZip am besten unterstützt wird). Hier sind die technische Daten - Wir haben dies bei der Entwicklung unseres eigenen verschlüsselten Java-Zip-Systems verwendet (ich kann den Quellcode nicht zur Verfügung stellen - tut mir leid - es ist nur für den internen Gebrauch)

Das Einzige, was noch schlimmer ist, als keine Verschlüsselung zu haben, ist zu denken, dass man eine Verschlüsselung hat und sich zu irren :-)

2 Stimmen

Vielleicht möchten Sie beides unterstützen. AES-verschlüsselte Zip-Dateien werden, aFAIK, noch nicht vom Windows Explorer unterstützt, PKZIP-verschlüsselte hingegen schon. Sie können die Einträge beider Arten von verschlüsselten Zip-Dateien anzeigen, aber Sie können nur aus einer PKZIP-verschlüsselten (schwach verschlüsselten) Zip-Datei mit Windows Explorer extrahieren. Zum Öffnen von AES-verschlüsselten Zip-Dateien benötigen Sie WinZip oder ein anderes geeignetes Tool unter Windows. (Das kostenlose DotNetZip wird mit einem solchen Tool geliefert).

0 Stimmen

Sowohl Windows XP SP3 als auch Vista unterstützen AES-Zip-Dateien. Meiner Meinung nach (der jeder zustimmen kann) ist es eine schlechte Idee, etwas zu unterstützen, das nicht einmal im Entferntesten sicher ist. Dass M$ ein sicheres Format nicht unterstützt, ist kein triftiger Grund, etwas zu implementieren, das unsicher ist.

0 Stimmen

Mit Winzipaes erstellte (siehe oben) .zip-Dateien lassen sich auf meinem aktuellen Windows XP-Image nicht öffnen, Windows meckert über ein nicht unterstütztes Kompressionsverfahren. Mit 7z lassen sie sich jedoch problemlos öffnen.

4voto

PhiLho Punkte 39496

7-Zip bietet im Befehlszeilenmodus die Möglichkeit, ein Kennwort hinzuzufügen. Vielleicht können Sie es ausführen, um dieses Ergebnis zu erhalten (und es hat auch eine gute Kompressionsrate).

Nachteile: externer Prozess, schwer portabel zu machen (auch wenn 7-Zip selbst portabel ist), nicht sicher, ob die Distribution lizenziert ist.

Beachten Sie, dass das ebenfalls sehr portable Zip-Dienstprogramm von InfoZip auch Kennwörter unterstützt.

0 Stimmen

Ich glaube, 7-zip verfügt über Bibliotheken, die in selbst geschriebenen Programmen verwendet werden können, so dass es sich nicht um einen externen Prozess handeln muss.

0 Stimmen

@Quagmire 7-zip hat keinen nativen Java-Build (außer für den LZMA-Algorithmus), so dass die Verwendung von 7z für die Arbeit mit ZIP-Dateien einen externen Prozess erfordert.

0 Stimmen

@ChristopherSchultz in der Tat. Ich nehme an, man kann auch ein JNI oder JNA Wrapper schreiben, für weniger Mühe.

3voto

Kai Mechel Punkte 754

Sie können auch TrueZip ausprobieren. Siehe die folgenden Links für die Funktionen: https://christian-schlichtherle.bitbucket.io/truezip/

Der Nachfolger von TrueZip ist hier zu finden: https://christian-schlichtherle.bitbucket.io/truevfs/

1 Stimmen

Ich wünschte, ich hätte das früher gesehen, Zip4j ist gut, aber das hier ist besser. Insbesondere behandelt es eine breitere Palette von Eingaben, wie selbst extrahierende und verschachtelte Zip-Dateien und Mathe andere Dinge, und ist nicht aufgegeben.

1 Stimmen

Update für alle, die dies heute lesen: Die Entwicklung von Zip4j wird ab Mitte 2021 wieder aufgenommen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X