[완료] perl Gzip module으로 압축을 했을때, 매번 binary code가 다르게 나오는 이유는??
글쓴이: jekai / 작성시간: 수, 2010/11/17 - 10:24오후
안녕하세요,
Gzip module을 이용하고 있는데요 ( perl )
궁금한 사항이 있어서 질문드립니다.
Gzip으로 압축을 하면, 가끔씩 압축된 binary 파일이 다릅니다.( 물론 다시 decoding하면 같고요 )
예를들어 아래와 같은 형태로 test를 하면 다른 결과가 나오네요...
for ( i = 0 ; i < 1000 ; i++ )
{
....gzip "4000byte text" to Encode_Value ;
....if ( i == 0 )
....{
........first = Encode_Value ;
........next ;
....}
....if ( first != Encoded_Value )
....{
........print "Different!!!!" ;
....}
}
자세히는 모르겠지만,
압축알고리즘이 entropy + 사전코딩으로 구현되있으면,,, 압축할때마가 결과가 달라질 수 있나요???
위의 결과는 왜 그런가요???? ( 결과가 같게 나오게 할 방법은 없나요? )
( 참고로 deflate module로 압축했을때는 결과가 항상 같게 나오네요...
deflate도 찾아보니 사전코딩(LZ77) + entropy(Huffman) 으로 이루어진 알고리즘인데... 왜 zip 계열만 다른지...)
Forums:
이유는
이건 Perl의 Gzip모듈의 문제가 아니라 gzip파일의 포멧특성상 생기는 것 같습니다.
gzip된 파일의 헤더에 들어가는 timestamp 때문에 그럴 수 있다고 하네요
참고:
http://www.linuxquestions.org/questions/linux-software-2/md5sum-different-on-gzipped-file-but-same-when-gunzipped-508285/
댓글 달기