development

파일 압축에 사용할 무료 라이브러리에 대한 권장 사항

big-blog 2020. 10. 27. 22:45
반응형

파일 압축에 사용할 무료 라이브러리에 대한 권장 사항


파일을 압축하고 암호로 보호해야합니다. 이것에 대한 좋은 (무료) 라이브러리가 있습니까?

이것은 타사에서 열어야하므로 암호 보호는 표준 도구와 함께 작동해야합니다.


많은 검색 끝에 세 가지 접근 방식을 찾았습니다.

단일 파일 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에있는 하나의 파일) Java의 오픈 소스 라이브러리에 구멍을 멋지게 채 웁니다.

상용 제품 (작성 당시 $ 500). 평가판 라이센스 접근 방식이 복잡하기 때문에 이것이 작동하는지 확인할 수 없습니다. 또한 포팅 된 .NET 앱 : http://www.nsoftware.com/ipworks/zip/default.aspx

상용 제품 (작성 당시 $ 290). dll을 사용하므로 Wnidows에만 적합 : http://www.example-code.com/java/zip.asp


zip 파일을 처리하는 순수 자바 라이브러리 인 Zip4j 를 사용해 볼 수 있습니다 . PKWare 및 AES 암호화 방법의 암호화 / 복호화를 지원합니다.

주요 특징들:

  • Zip 파일에서 파일 생성, 추가, 추출, 업데이트, 제거
  • 암호로 보호 된 Zip 파일 읽기 / 쓰기
  • AES 128/256 암호화 지원
  • 표준 Zip 암호화 지원
  • Zip64 형식 지원
  • Store (No Compression) 및 Deflate 압축 방식 지원
  • 분할 Zip 파일 (예 : z01, z02, ... zip)에서 파일 생성 또는 추출
  • 유니 코드 파일 이름 지원
  • 진행 모니터

특허:


이것은 대답이 아니지만 잠재적 인 솔루션을 평가할 때 명심해야 할주의 사항입니다.

zip 암호화에 대해 매우 중요한 한 가지 :

여러 유형의 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();

Winzip (v9 +)을 사용하거나 Mac에서 "my-password"암호를 사용하여 7za (예 : 7zip)를 사용하여 "/tmp/foo.zip"의 압축을 풀 수 있습니다.

참고 : 위 코드에서 암호를 두 번 지정해야하는 이유가 명확하지 않습니다. 이 두 곳에서 다른 암호를 사용하면 어떻게 될지 모르겠습니다.


더 나은 사용 시나리오를 제공하면 다른 대안이 있습니다.

  1. zip 암호를 처리 할 수있는 표준 Zip 도구로 zip을 열어야합니까?
  2. The same question as previous are you going to pass this zip to an external entity that has to open the zip?
  3. Is it internal only and you just want to protect the contents of the zip?

For 3 then you can just use java to encrypt the stream contents of the zip as a normal file, probably best to change the file extension to .ezip or somesuch too.

For 1 and 2 then you can use the chillkat solution as mentioned, or an equivalent. However be aware that chillkat is not a pure Java solution, it uses JNI.


Additional info: I googled a bit more and indeed, it is a quite common question, and it appears there is no free solution (yet?).

Now, the standard algorithm of Zip encryption is well defined: See PKWARE's Application Note on the .ZIP file format. It appears to be an encryption done on the encrypted stream. If somebody feels like coding it...

Now, I wonder why Sun didn't include it in its library? Lack of standard? Patent/legal issue? Too weak to be usable?


Is there a good (free) library for this?

java.util.zip will do the zipping, but it won't do the passwords. And no, I don't know of any free ones that will. The cheapest I've seen is $150 for a developer seat.

참고URL : https://stackoverflow.com/questions/166340/recommendations-on-a-free-library-to-be-used-for-zipping-files

반응형