ZIP文件格式

   ZIP 文件格式 是一种流行的数据压缩和文档储存的文件格式,原名Deflate,发明者为菲尔·卡茨Phil Katz ),他于1989年 1月 公布了该格式的资料。ZIP通常使用后缀名“.zip”,它的MIME 格式为 application/zip

 

危机

基本上,Zip文件的发展都是由PKware公司与Winzip所推动。然而,其两家公司就某些问题上互相猜疑,导致发展缓慢。人们目前最想在 Zip文件实现的目标,就是加强目前Zip文件的加密能力。就目前而言,Zip的文件加密能力弱得可怜,仅凭单单一个口令保护,根本满足不了安全需求。虽 然卡兹在生时公开了格式,但是当时制作的时候留有为日后升级的空间。而Winzip仅仅是一个使用者,根本无法发布新标准,其标准的制订权依然保留在 PKware手中。2002年时,PKware开发了支持256位AES加密的PKZIP 5.0,但是Winzip在2003年发布的Winzip 9却被证明了无法与之相容。双方都互相指责对方违背了Zip的自由开放精神。这是Zip自诞生日起,第一个对于它来说最严峻的挑战。

(这一点不明白,zip算法应该是标准的。winrar也是根据这个做的两家公司为什么搞成这样?)

 

文件头

使用任何一种文本编辑器打开Zip文件,都会看到头2字母为:PK

技术

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的窗口。增强版完成任务稍稍成功一些,但是并没有被广泛的支持。
Deflate比较尺寸是52.1MiB(使用pkzip for Windows,版本8.00.0038测试)
增强的Deflate比较尺寸是52.8MiB(使用pkzip for Windows,版本8.00.0038测试)
PKWARE Data Compression Library Imploding(方法10)
PKWARE数据压缩库爆聚(PKWARE Data Compression Library Imploding),官方ZIP格式规约就此没有给出更多的信息。
比较尺寸是61.6MiB(使用pkzip for Windows,版本8.00.0038测试,选择二进制模式)
方法11
此方法被PKWARE保留。
Bzip2(方法12)
此方法使用众所周知的bzip2算法。此算法比deflate高效但是并没有被(基于Windows平台的)工具所支持。
比较尺寸是50.6MiB(使用pkzip for Windows,版本8.00.0038测试)
展开阅读全文

没有更多推荐了,返回首页