파일을 지핑하는 데 사용할 무료 라이브러리의 권장 사항 [폐쇄

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의 파일 하나), Java 's Opens 소스 라이브러리의 구멍을 멋지게 채 웁니다.

상용 제품 (글쓰기 시점에 $ 500). 시험 라이센스 접근 방식이 복잡하기 때문에 이것이 효과가 있는지 확인할 수 없습니다. 포팅 된 .NET 앱도 다음과 같습니다.http://www.nsoftware.com/ipworks/zip/default.aspx

상업용 제품 (글쓰기 당시 $ 290). DLL을 사용하므로 wnidows에만 적합합니다.http://www.example-code.com/java/zip.asp

다른 팁

당신은 시도 할 수 있습니다 Zip4J, 지퍼 파일을 처리하는 순수한 Java 라이브러리. PKWare 및 AES 암호화 방법의 암호화/ 암호 해독을 지원합니다.

주요 특징들:

  • zip 파일에서 파일을 작성, 추가, 추출, 업데이트, 제거
  • 비밀번호 보호 된 zip 파일 읽기/쓰기
  • AES 128/256 암호화를 지원합니다
  • 표준 지퍼 암호화를 지원합니다
  • Zip64 형식을 지원합니다
  • 상점 (압축 없음)을 지원하고 압축 방법을 디플레이트합니다.
  • 분할 zip 파일에서 파일 생성 또는 추출 (예 : Z01, Z02, ... 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();

Mac에서 "my-password"를 사용하여 Mac에서 Winzip (v9+) 또는 7ZA (예 : 7ZIP)를 사용하여 "/tmp/foo.zip"을 zip 할 수 있습니다.

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

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

  1. 지퍼 비밀번호를 처리 할 수있는 표준 지퍼 도구로 ZIP를 열어야합니까?
  2. 이전과 동일한 질문은이 지퍼를 지퍼를 열어야하는 외부 엔티티에 전달 하시겠습니까?
  3. 내부적이고 지퍼의 내용을 보호하고 싶습니까?

3의 경우 Java를 사용하여 zip의 스트림 내용을 일반 파일로 암호화 할 수 있습니다. 파일 확장자를 .ezip 또는 somesuch로 변경하는 것이 가장 좋습니다.

1과 2의 경우 사용할 수 있습니다 Chillkat 언급 된 바와 같은 솔루션. 그러나 Chillkat은 순수한 Java 솔루션이 아니라 JNI를 사용합니다.

추가 정보 : 나는 조금 더 구글을 get 다. 그리고 실제로, 그것은 매우 일반적인 질문이며, 아직 무료 솔루션이없는 것 같습니다 (아직?).

이제 ZIP 암호화의 표준 알고리즘이 잘 정의되어 있습니다. PKWare의 참조 응용 프로그램 노트 .zip 파일 형식에서 암호화 된 스트림에서 암호화 된 것으로 보입니다. 누군가 코딩하고 싶다고 느끼면 ...

이제 태양이 왜 도서관에 포함시키지 않았는지 궁금합니다. 표준 부족? 특허/법적 문제? 활용하기에는 너무 약합니까?

이것에 대한 좋은 (무료) 도서관이 있습니까?

java.util.zip은 지핑을 수행하지만 비밀번호를 수행하지는 않습니다. 그리고 아니요, 나는 자유로운 것을 모릅니다. 가장 저렴한 개발자 좌석의 경우 $ 150를 보았습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top