AZO
1. 개요
이스트소프트에서 알집의 EGG 포맷에 사용하기 위해서 만든 무손실 압축 포맷.
2. 설명
알집에서 EGG 포맷으로 압축을 할때, 압축율과 압축 속도의 최적화를 위해서 파일의 확장자별로 다른 압축 알고리즘을 사용한다. 예를 들자면 .txt 파일은 Bzip2 알고리즘으로 압축하고, .exe 파일은 Deflate 알고리즘을 사용하는 식. 그런데 파일의 확장자가 .com이나 .sys 인 파일은 AZO 알고리즘으로 압축을 한다.
알집 8.0 베타 버전에서는 .dll 파일을 AZO 알고리즘으로 압축했는데, 압축 알고리즘이 너무 느린 관계로 파일의 크기가 매우 작은 .com , .sys 파일에 대해서만 AZO 알고리즘으로 압축을 한다.
사실상 EGG 포맷이 LZMA 알고리즘을 지원하게 되면서부터 AZO 알고리즘을 사용할 이유가 전혀 없지만, 굳이 이 알고리즘을 사용하는 이유는 다른 회사에서 EGG 포맷을 맘대로 압축을 해제하기 못하게 하기 위한 정책일 가능성이 높다. EGG 포맷을 자체적으로 지원하던 반디집은 6.0에서 이스트소프트사의 요청에 따라 AZO 알고리즘 해제 기능을 제외시켰는데, AZO 알고리즘에 한해서 unegg 라이브러리의 소스코드를 사용했기 때문이다. 하지만 리버스 엔지니어링을 통해 자체적으로 AZO 알고리즘을 구현하였고 6.19 업데이트에서 반영되어서 정상적으로 압축 해제 가능하다.
AZO 알고리즘은 속도는 느리지만 압축율이 매우 뛰어난 알고리즘이다. 기본적으로 ZIP 포맷에서 쓰이는 Deflate 알고리즘보다 훨씬 뛰어난 압축율을 보여주고 있으며, 심지어 최강의 압축율을 지닌다고 알려진 7zip의 LZMA 알고리즘과 버금가거나 더 좋은 압축율을 보여주었다. 파일의 확장자를 .com 으로 바꾸고 egg 포맷으로 압축을 해보면 실험이 가능하다.
리버스 엔지니어링 결과, LZMA와 거의 동일한 압축 방식을 사용하고 있는 것으로 보인다. LZ77을 사용하는 것이 확인되었고 백엔드로도 Binary Range Coding을 사용하는 것으로 보인다.