[완료] perl Gzip module으로 압축을 했을때, 매번 binary code가 다르게 나오는 이유는??

jekai의 이미지

안녕하세요,
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 계열만 다른지...)

aero의 이미지

이건 Perl의 Gzip모듈의 문제가 아니라 gzip파일의 포멧특성상 생기는 것 같습니다.
gzip된 파일의 헤더에 들어가는 timestamp 때문에 그럴 수 있다고 하네요

참고:
http://www.linuxquestions.org/questions/linux-software-2/md5sum-different-on-gzipped-file-but-same-when-gunzipped-508285/