zip파일 Huffman 코드 테이블
몇일전에 자바 공부를 시작했습니다.
책만 보고 공부할려니 의욕이 점점 떨어져서
.zip 압축을 풀 수 있는 프로그램을 만들어보자.(단, 라이브러리는 쓰지않고)
하고 시작하게 되었습니다.
정말 어렵더라고요. 그냥 책이나 볼껄 하고 후회하고 있는 중입니다.;;;
대충 Local File Header 까지는 추출하고 데이터 시작하는 부분과 끝나는 부분까지는 찾았는데 그 데이터를 압축한....그러니까 그 압축한 데이터를 풀수있는 키(?) 가 어딨는지 찾을수가 없어서 질문글을 올리게 되었습니다.
1. zip은 LZ77+Huffman인 DEFLATE 로 되어있다고 해서 그에 대해 알아보니
unzip하기 위해서는 Huffman 코드 테이블을 알고 참조해서 풀어야되는 것 같더라고요.
그런데 Huffman 코드 테이블이 어디에 숨어있는지 알 수가 없네요....
2. 아래가 제가 추출한 헤더부분인데 제가 제대로 이해하고 있는지 몰르겠어요.
(2)14 00 - [14 00] -압축해제시 필요한 ver
(2)00 00 - [00 00] -Bit Flag
(2)08 00 - [08 00] -압축방법(0 - strore, 8 - deflate, 14 - lzma)
(2)37 8c - [55 140] -최종 파일 수정 시간
(2)61 3f - [97 63] -최종 파일 수정 날짜
(4)b5 97 f1 8d - [181 151 241 141] -CRC-32
(4)8c 0f 00 00 - [140 15 0 0] -압축한 파일크기
(4)e0 af 00 00 - [224 175 0 0] -비압축한 파일크기
(2)08 00 - [08 00] -파일 이름 길이
(2)08 00 - [08 00] -extra field 길이
---------------30바이트(아래부턴 가변길이 헤더값)--------------------------
74 65 73 74 2e 54 58 54 -위에 파일이름 길이만큼 활당되어 파일이름 값을 가짐
7a e5 04 00 b5 03 00 00 -위에 EXTRA FIELD 길이만큼 활당되어 무슨값을 가지고 있는지 아직 모름
-------------------------데이터 부분----------------------------------------
ed 5d 5b 6f 1b c7 15 7e 17 a0 ff 30 d0 43 2d d9 34 bb bb bc bb 90 81 35 b9 96 18 f3 e2 92 94
......................
^^ 즐거운 하루되세요
댓글 달기