한글 비밀번호가 자꾸 틀렸다고 나올 때 — ZIP 비밀번호 불일치의 진짜 원인
비밀번호를 분명히 맞게 입력했는데 압축 프로그램이 계속 "비밀번호가 맞지 않습니다"라고 거부할 때가 있습니다. 영문·숫자 비밀번호였다면 이런 일이 거의 없지만, 한글이 섞인 비밀번호라면 완전히 다른 얘기입니다. 비밀번호 자체가 틀린 게 아니라, 압축한 프로그램과 여는 프로그램이 한글을 서로 다른 방식으로 처리하기 때문입니다. 원인을 알면 해결책도 보입니다.
ZIP 비밀번호는 텍스트가 아니라 바이트로 비교된다
ZIP 파일에 비밀번호를 걸 때, 프로그램은 입력한 비밀번호 문자열을 그대로 저장하는 것이 아닙니다. 문자를 특정 인코딩 방식으로 변환한 바이트 열을 기준으로 압축 헤더를 잠급니다. 비밀번호를 풀 때도 마찬가지로, 입력한 문자를 같은 방식으로 변환한 뒤 저장된 값과 바이트 단위로 비교합니다.
영문자와 숫자는 ASCII로 정의된 범위 안에 있어서, 어떤 인코딩을 써도 바이트 값이 항상 같습니다.
A는 CP949에서도 0x41, UTF-8에서도 0x41입니다.
그래서 영문 비밀번호는 프로그램이 달라도 거의 문제가 없습니다.
한글은 다릅니다. 가 한 글자만 해도, CP949(EUC-KR)에서는 0xB0 0xA1 2바이트이고,
UTF-8에서는 0xEA 0xB0 0x80 3바이트입니다.
비밀번호를 만든 프로그램이 CP949로 저장했는데 여는 프로그램이 UTF-8로 비교하면, 완전히 다른 바이트를 대조하게 됩니다.
비밀번호가 아무리 맞아도 틀렸다고 나오는 이유가 바로 이것입니다.
어떤 조합에서 충돌이 발생하는가
이 문제는 특정 프로그램이 잘못된 게 아니라, 오래된 프로그램과 현대 프로그램 사이의 인코딩 관행 차이에서 비롯됩니다.
충돌이 발생하는 대표적인 조합:
- 옛 알집(2010년대 이전)이나 WinZip으로 한글 비밀번호를 걸어 만든 파일 → 반디집 최신 버전이나 7-Zip으로 열 때
- 한국어 윈도우에서 내장 ZIP 기능이나 CP949 기반 프로그램으로 압축 → 맥·리눅스(기본 UTF-8 환경)에서 열 때
- 이메일·메신저로 주고받은 압축파일을 받는 사람의 프로그램 환경이 다를 때
반대 방향도 생깁니다. UTF-8 기반으로 만든 파일을 CP949 프로그램으로 열면 역시 같은 증상입니다. 비밀번호를 만든 쪽과 여는 쪽이 같은 프로그램을 쓰거나, 같은 인코딩을 쓰는 환경에서는 이 문제가 생기지 않습니다.
AES 방식 ZIP과 ZipCrypto의 차이
ZIP에는 두 가지 비밀번호 방식이 있고, 한글 비밀번호 호환성에서도 차이가 납니다.
ZipCrypto(전통 방식): 1980년대에 설계된 오래된 방식입니다. 비밀번호 인코딩 규칙을 ZIP 표준이 명시하지 않아, 각 프로그램이 운영체제 로케일(한국 윈도우라면 CP949)에 맞게 제각각 처리해 왔습니다. 그래서 프로그램 간 한글 비밀번호 호환 문제가 여기에서 주로 발생합니다.
AES-256(현대 방식): 반디집·7-Zip의 "AES-256" 옵션으로 만든 ZIP입니다. 비밀번호를 Unicode(UTF-8)로 처리하도록 설계되어 있어, 운영체제와 프로그램이 달라도 한글 비밀번호의 바이트 값이 일관됩니다. 보안도 ZipCrypto보다 월등히 강합니다.
단, AES 방식 ZIP은 오래된 프로그램이나 일부 도구에서 지원하지 않습니다. 받는 쪽의 환경을 모른다면 반디집으로 여는 것이 가장 안전합니다.
증상별 해결 방법
같은 프로그램으로 여는 것이 가장 확실합니다. 보낸 쪽에서 어떤 프로그램으로 압축했는지 알 수 있다면, 같은 프로그램을 설치해 여는 것이 인코딩 불일치를 피하는 가장 직접적인 방법입니다.
unzip.kr 비밀번호 도구 시도: unzip.kr 비밀번호 압축풀기는 ZipCrypto ZIP과 비밀번호 걸린 ALZ를 지원합니다. 파일과 비밀번호 모두 외부 서버로 나가지 않으며, 해제는 브라우저 메모리 안에서만 이루어집니다. 한글 비밀번호 호환성은 개선 중이며, 압축한 프로그램에 따라 성공 여부가 달라질 수 있습니다. 영문·숫자 비밀번호는 이 문제가 없습니다.
AES 방식이라는 안내가 나올 경우: 파일을 도구에 넣으면 자동으로 감지해 알려줍니다. AES 방식 지원은 준비 중이므로, 그 경우에는 반디집(무료)으로 여는 것을 권합니다.
영문 비밀번호로 재압축: 보낸 쪽에서 원본 파일을 가지고 있다면, 한글 비밀번호 대신 영문·숫자 조합으로 다시 압축해 보내달라고 요청하는 것이 근본 해결책입니다. 어느 프로그램에서도 호환 문제가 없어집니다.
비밀번호를 잊어버린 경우 — 솔직한 답변
비밀번호를 아예 모르는 경우라면, 어떤 프로그램이나 서비스로도 사실상 찾을 수 없습니다. 특히 한글 비밀번호는 경우의 수가 영문보다 훨씬 많아(한글 한 글자의 경우의 수가 영문 알파벳 전체보다 많습니다), 무차별 대입 방식으로는 더 어렵습니다.
"비밀번호 복구"를 내세우는 온라인 서비스들은 대부분 무차별 대입을 시도할 뿐이며, 8자 이상의 비밀번호는 사실상 뚫리지 않습니다. 게다가 파일을 그런 서비스에 업로드하는 것 자체가 개인정보 유출 위험입니다. 비밀번호를 걸었던 본인이나 보낸 사람에게 문의하는 것이 유일하게 현실적인 방법입니다.
unzip.kr 비밀번호 압축풀기는 ZipCrypto ZIP과 ALZ를 지원합니다. 파일도, 입력한 비밀번호도 서버로 전송되지 않습니다 — 해제는 전부 브라우저 안에서 일어납니다.
비밀번호 걸린 압축 풀기 →