ファイルの圧縮に使用する無料ライブラリに関する推奨事項 [終了]

StackOverflow https://stackoverflow.com/questions/166340

  •  03-07-2019
  •  | 
  •  

質問

ファイルを圧縮してパスワードで保護する必要があります。これに適した (無料) ライブラリはありますか?

これはサードパーティによって開かれる必要があるため、パスワード保護は標準ツールで機能する必要があります。

役に立ちましたか?

解決

よく検索した結果、3つのアプローチが見つかりました。

単一のファイルzipに適した、自由に利用できるソースコードのセット。ただし、ライセンスはありません。使用法はAesZipOutputStream.zipAndEcrypt(...)です。 http://merkert.de/de/info/zipaes/src.zip https://forums.oracle.com/forums/thread.jspa?threadID= 1526137

更新:このコードは現在、Apacheでライセンスされ、 http://code.google.com/でリリースされています。 p / winzipaes / 。それは私のために働いた(zip内の1つのファイル)、Javaのオープンソースライブラリの穴をうまく埋めました。

商用製品(執筆時点で500ドル)。トライアルライセンスのアプローチは複雑であるため、これが機能するかどうかは確認できません。また、移植された.NETアプリ: http://www.nsoftware.com/ipworks/zip/default.aspx

商用製品(執筆時点で290ドル)。 dllを使用するため、Wnidowsにのみ適しています。 http://www.example-code.com/java/zip.asp

他のヒント

zipファイルを処理するための純粋なJavaライブラリである Zip4j を試すことができます。 PKWareおよびAES暗号化方式の暗号化/復号化をサポートしています。

主な機能:

  • Zipファイルからのファイルの作成、追加、抽出、更新、削除
  • パスワードで保護されたZipファイルの読み取り/書き込み
  • AES 128/256暗号化をサポート
  • 標準のZip暗号化をサポート
  • Zip64形式をサポート
  • ストア(圧縮なし)およびDeflate圧縮方式をサポート
  • 分割Zipファイルからファイルを作成または抽出します(例:z01、z02、... zip)
  • Unicodeファイル名のサポート
  • 進捗モニター

ライセンス:

これは答えではありませんが、潜在的な解決策を評価する際に注意する必要があります。

zip暗号化に関する1つの非常に重要なこと:

zip暗号化にはいくつかの種類があります。古いタイプ(元のzip標準の一部)は、わずらわしいほどの価値はまったくありません(オンラインで簡単に入手できるアプリを使用すると、10分以内にクラッキングできます)。

zipファイルの暗号化を行う場合は、強力な暗号化標準のいずれかを使用してください(WinZipの128ビットおよび256ビットのAES標準が最適にサポートされていると思います)。以下は技術仕様です-独自のJava暗号化zipシステムを開発するときにこれを使用しました(できませんソースを提供-申し訳ありません-内部使用のみです)

暗号化を行わないことよりも悪いことは、暗号化があり、間違っていると考えることだけです:-)

7-Zipには、コマンドラインモードでパスワードを追加するオプションがあります。おそらく、この結果を得るために実行することができます(また、圧縮率も良好です)。

欠点:外部プロセス、移植が難しい(7-Zip自体が移植可能であっても)、配布ライセンスがわからない。

InfoZipのZipユーティリティは移植性が高く、パスワードもサポートしています。

TrueZipを試すこともできます。機能については、次のリンクを参照してください。 https://christian-schlichtherle.bitbucket.io/truezip/

TrueZipの後継は次の場所にあります。 https://christian-schlichtherle.bitbucket.io/truevfs/

これはwinzipaes 1.0.1を使用した例です。 これは単なる要点であり、この形式でこのコードをテストしたことはありません。

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();

" /tmp/foo.zip"を解凍できますMacでWinzip(v9 +)または7za(7zip)を使用し、パスワード「my-password」を使用します。

注:上記のコードでパスワードを2回指定する必要がある理由は明らかではありません。これら2つの場所で異なるパスワードを使用するとどうなるかわかりません。

より良い使用シナリオがあれば、他の選択肢もあります。

  1. zip パスワードを処理できる標準の Zip ツールで zip を開く必要がありますか?
  2. 前と同じ質問ですが、この zip を開く必要がある外部エンティティにこの zip を渡しますか?
  3. それは内部のみで、zip の内容を保護したいだけですか?

3 の場合は、Java を使用して zip のストリーム コンテンツを通常のファイルとして暗号化することができます。おそらく、ファイル拡張子も .ezip などに変更するのが最善です。

1 と 2 については、 チルカット 前述のソリューション、または同等のもの。ただし、chillkat は純粋な Java ソリューションではなく、JNI を使用することに注意してください。

追加情報:私はもう少しグーグルで検索しましたが、実際、これは非常に一般的な質問であり、無料のソリューションはないようです(まだ?)。

現在、Zip暗号化の標準アルゴリズムは明確に定義されています。PKWAREのアプリケーションノート。暗号化されたストリームで行われた暗号化のようです。誰かがそれをコーディングしたいと思うなら...

今、なぜサンはそれをライブラリに含めなかったのだろうか?標準の欠如?特許/法的問題?使用するには弱すぎますか?

  

これに適した(無料の)ライブラリはありますか?

java.util.zipは圧縮を実行しますが、パスワードは実行しません。いいえ、無料になるものは知りません。 私が見た中で最も安いは、開発者席で150ドルです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top