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/

2voto

Marc Punkte 806

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.

1voto

Donal Tobin Punkte 95

Wenn Sie ein besseres Nutzungsszenario angeben, gibt es andere Alternativen.

  1. Soll die Zip-Datei mit den Standard-Zip-Tools geöffnet werden, die ein Zip-Passwort verarbeiten können?
  2. Die gleiche Frage wie zuvor sind Sie gehen, um diese Zip an eine externe Einheit, die die Zip zu öffnen hat übergeben?
  3. Handelt es sich um eine interne Datei, bei der Sie nur den Inhalt der Zip-Datei schützen wollen?

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.

0 Stimmen

Chillkat ist nicht "kostenlos", es ist Trialware.

1voto

PhiLho Punkte 39496

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?

0 Stimmen

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.

-1voto

Oli Punkte 226885

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.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