ZIP技术是一种相当简单的分别压缩吗?
ZIP是一种相当简单的分别压缩每个文件的存档格式。分别压缩文件允许不必读取另外的数据而检索独立的文件;理论上,这种格式允许对不同的文件使用不同的算法。不管用何种方法,对这种格式的一个告诫是对于包含很多小文件的时候,存档会明显的比压缩成一个独立的文件(在类Unix系统中一个经典的例子是普通的tar.gz存档是由一个使用gzip压缩的TAR存档组成)要大。
ZIP的规约指出文件可以不经压缩或者使用不同的压缩算法来存储。然而,在实际上,ZIP几乎差不多总是在使用卡茨(Katz)的DEFLATE算法。
ZIP支持基于对称加密系统的一个简单的密码,已知有严重的缺陷,已知明文攻击,字典攻击和暴力攻击。ZIP也支持分卷压缩。
在近来一段时间,ZIP加入了包括新的压缩和加密方法的新特征,不过这些新特征并没有被许多任务所支持并且没有得到广泛应用。
关于压缩的如下方法是
Shrinking(方法1)
收缩(Shrinking)是LZW的微小调整的一个异体,同样也受到LZW专利问题的影响。从来没有明确的是这项专利是否涵盖反收缩,不过一些开放源码的项目(例如Info-ZIP)决定谨慎行事,在默认的构造里不包含反收缩的支持。
Reducing(方法2-5)
缩小(Reducing)包括压缩重复字节序列的组合,然后应用一个基于概率的编码得到结果。
Imploding(方法6)
爆聚(Imploding)包括使用一个滑动窗口压缩重复字节序列,然后使用多重Shannon-Fano树压缩得到结果。
Tokenizing(方法7)
令牌化(Tokenizing)的方法数是保留的。PKWARE规约没有为其定义一个算法。
Deflate和增强的Deflate(方法8和9)
这些方法使用众所周知的Deflate算法。Deflate允许最大32K的窗口。增强的Deflate允许最大64K的窗口。增强版完成任务稍稍成功一些,但是并没有被广泛的支持。