파일을 지핑하는 데 사용할 무료 라이브러리의 권장 사항 [폐쇄
-
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)
- 유니 코드 파일 이름을 지원합니다
- 진행 모니터
특허:
- Zip4J는 아래에 출시됩니다 Apache 라이센스, 버전 2.0.
이것은 답이 아니지만 잠재적 솔루션을 평가할 때 명심해야합니다.
지퍼 암호화에 대한 매우 중요한 것 :
지퍼 암호화에는 여러 유형이 있습니다. 기존 유형 (원래 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 할 수 있습니다.
참고 : 위의 코드에서 비밀번호를 두 번 지정 해야하는 이유는 명확하지 않습니다. 이 두 곳에서 다른 비밀번호를 사용하면 어떻게 될지 모르겠습니다.
더 나은 사용 시나리오를 제공하면 다른 대안이 있습니다.
- 지퍼 비밀번호를 처리 할 수있는 표준 지퍼 도구로 ZIP를 열어야합니까?
- 이전과 동일한 질문은이 지퍼를 지퍼를 열어야하는 외부 엔티티에 전달 하시겠습니까?
- 내부적이고 지퍼의 내용을 보호하고 싶습니까?
3의 경우 Java를 사용하여 zip의 스트림 내용을 일반 파일로 암호화 할 수 있습니다. 파일 확장자를 .ezip 또는 somesuch로 변경하는 것이 가장 좋습니다.
1과 2의 경우 사용할 수 있습니다 Chillkat 언급 된 바와 같은 솔루션. 그러나 Chillkat은 순수한 Java 솔루션이 아니라 JNI를 사용합니다.
추가 정보 : 나는 조금 더 구글을 get 다. 그리고 실제로, 그것은 매우 일반적인 질문이며, 아직 무료 솔루션이없는 것 같습니다 (아직?).
이제 ZIP 암호화의 표준 알고리즘이 잘 정의되어 있습니다. PKWare의 참조 응용 프로그램 노트 .zip 파일 형식에서 암호화 된 스트림에서 암호화 된 것으로 보입니다. 누군가 코딩하고 싶다고 느끼면 ...
이제 태양이 왜 도서관에 포함시키지 않았는지 궁금합니다. 표준 부족? 특허/법적 문제? 활용하기에는 너무 약합니까?
이것에 대한 좋은 (무료) 도서관이 있습니까?
java.util.zip은 지핑을 수행하지만 비밀번호를 수행하지는 않습니다. 그리고 아니요, 나는 자유로운 것을 모릅니다. 가장 저렴한 개발자 좌석의 경우 $ 150를 보았습니다.