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.
Hier ist ein Beispiel mit winzipaes 1.0.1. Beachten Sie, dass dies nur ein Gist ist, ich habe diesen Code nicht in genau dieser Form getestet.
import de.idyl.winzipaes.AesZipFileEncrypter;
import de.idyl.winzipaes.impl.AESEncrypterBC;
File aNewZipFile = new File("/tmp/foo.zip");
File existingUnzippedFile = new File("/tmp/src.txt");
// We use the bouncy castle encrypter, as opposed to the JCA encrypter
AESEncrypterBC encrypter = new AESEncrypterBC();
encrypter.init("my-password", 0); // The 0 is keySize, it is ignored for AESEncrypterBC
AesZipFileEncrypter zipEncrypter = new AesZipFileEncrypter(aNewZipFile, encrypter);
zipEncrypter.add(existingUnzippedFile, "src.txt", "my-password");
// remember to close the zipEncrypter
zipEncrypter.close();
Sie können "/tmp/foo.zip" mit Winzip (v9+) oder 7za (d.h. 7zip) auf einem Mac unter Verwendung des Passworts "my-password" entpacken.
Hinweis: Mir ist nicht klar, warum es notwendig ist, das Kennwort in dem obigen Code zweimal anzugeben. Ich weiß nicht, was passieren würde, wenn Sie an diesen beiden Stellen unterschiedliche Passwörter verwenden würden.
Wenn Sie ein besseres Nutzungsszenario angeben, gibt es andere Alternativen.
Für 3 können Sie einfach Java verwenden, um den Stream-Inhalt der Zip-Datei wie eine normale Datei zu verschlüsseln, wahrscheinlich am besten, um die Dateierweiterung zu .ezip oder so zu ändern.
Für 1 und 2 können Sie dann die chillkat oder eine gleichwertige Lösung. Beachten Sie jedoch, dass chillkat keine reine Java-Lösung ist, sondern JNI verwendet.
Zusätzliche Informationen: Ich habe ein bisschen gegoogelt, und in der Tat ist dies eine recht häufige Frage, und es scheint (noch?) keine kostenlose Lösung zu geben.
Der Standardalgorithmus für die Zip-Verschlüsselung ist inzwischen gut definiert: Siehe PKWARE's Anwendungshinweis über das ZIP-Dateiformat. Es scheint sich um eine Verschlüsselung des verschlüsselten Streams zu handeln. Falls jemand Lust hat, es zu kodieren...
Jetzt frage ich mich, warum Sun es nicht in seine Bibliothek aufgenommen hat? Fehlender Standard? Patent-/Rechtsprobleme? Zu schwach, um brauchbar zu sein?
Genau das habe ich vor etwa 5 Jahren für eine unserer Anwendungen getan. Es hat einige Mühe gekostet (und ich kann leider keinen Code dafür veröffentlichen) - aber es ist gut zu wissen, dass es möglich ist. Wir haben das von WinZip propagierte starke AES-Verschlüsselungssystem implementiert.
Gibt es dafür eine gute (kostenlose) Bibliothek?
java.util.zip übernimmt das Zippen, aber nicht die Passwörter. Und nein, ich kenne kein freies Programm, das das kann. Der billigste Ich habe gesehen, dass der Preis für einen Entwicklersitz 150 Dollar beträgt.
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/