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.
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.
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:
Lizenz:
Und es funktioniert auch perfekt mit Android :) Große Bibliothek mit hervorragenden Beispielen +1!
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
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.
@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.
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 :-)
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).
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.
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.
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.
@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.
@ChristopherSchultz in der Tat. Ich nehme an, man kann auch ein JNI oder JNA Wrapper schreiben, für weniger Mühe.
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/
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.
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.
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/