Java로 개발을 하다 보면 종종 ZIP 압축 파일을 다뤄야 할 일이 생기는데, 그중에서도 비밀번호가 걸린 ZIP 파일을 해제해야 하는 경우가 있습니다.
하지만 기본 Java API나 아파치 라이브러리로는 이를 처리하기 어렵습니다.
이 글에서는 Java환경에서 비밀번호가 설정된 ZIP 파일을 안전하게 해제하는 방법과, 이를 위한 Zip4j 라이브러리의 사용법을 정리해드립니다.
Java에서 비밀번호 ZIP 파일을 해제하려면?
Java의 기본 java.util.zip 패키지는 암호화된 ZIP 파일을 지원하지 않습니다.
그렇기 때문에 다음과 같은 서드파티 라이브러리를 사용하는 것이 필요합니다.
추천 라이브러리: Zip4j
Zip4j는 Java에서 가장 널리 사용되는 ZIP 라이브러리 중 하나로, 비밀번호 해제, AES 암호화 지원, 분할 압축 파일 처리 등 다양한 기능을 제공합니다.
주요 기능
- AES 128/256 암호화 ZIP 파일 지원
- 비밀번호 설정 및 해제 가능
- 분할 압축 및 압축 수준 설정
- Java 8 완벽 지원
Zip4j 설치 방법
Maven
<dependency>
<groupId>net.lingala.zip4j</groupId>
<artifactId>zip4j</artifactId>
<version>2.11.5</version>
</dependency>
Gradle
implementation 'net.lingala.zip4j:zip4j:2.11.5'
암호화 ZIP 파일 해제(예제)
import net.lingala.zip4j.ZipFile;
public class ZipDecryptExample {
public static void main(String[] args) {
try {
// 암호화된 ZIP 파일 열기
ZipFile zipFile = new ZipFile("example.zip", "비밀번호".toCharArray());
// 압축 해제 경로 설정
zipFile.extractAll("output_directory");
System.out.println("압축 해제 완료!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Apache 라이브러리는 대안이 될 수 있을까?
많이 사용하는 Apache Commons Compress나 Apache Ant는 아쉽게도 비밀번호가 설정된 ZIP 파일은 지원하지 않습니다.
특히 AES-256 암호화는 전혀 지원되지 않기 때문에, 암호화 ZIP 파일을 처리할 때는 Zip4j를 사용하는 것이 정답입니다.
호환성
Zip4j는 Java 8 이상을 지원하며, Java 1.8에서도 완벽히 동작합니다.
다만, AES-256 암호화를 사용할 경우, Java 8의 보안 정책 설정에 따라 아래와 같은 상황이 있을 수 있습니다:
- Java 8u161 이상: 별도 설정 없이 AES-256 가능
- Java 8u151 이하: JCE (Java Cryptography Extension) 정책 파일 설치 필요
결론
Java에서 암호화된 ZIP 파일을 다뤄야 한다면, Zip4j는 신뢰할 수 있는 최고의 라이브러리입니다.
간단한 설치와 사용법만 익히면, 어떤 종류의 암호화 ZIP 파일도 손쉽게 처리할 수 있습니다.
Apache 라이브러리만으로는 불가능하므로 주의하세요.
'개발 > 개발 구현' 카테고리의 다른 글
[Spring Boot DDNS 자동 갱신] DuckDNS와 함께하는 DDNS IP 자동화 프로그램 만들기 (0) | 2025.05.01 |
---|---|
Java로 DNS 서버 만들기 – 모바일 테스트를 위한 자체 DNS 구축 방법 (1) | 2025.04.20 |
Java에서 Telegram 봇 만들기 – telegrambots 라이브러리 사용법 & 메시지 수신 및 삭제 예제 (0) | 2025.04.18 |
JAVA에서 XML 전자문서에 디지털 서명하는 방법 (PKCS12 인증서 사용) (0) | 2025.04.16 |
Java Spring – XML 기반 Bean 설정 정리 (0) | 2025.04.11 |