ZIP文件格式是一种数据压缩和文档储存的文件格式,原名Deflate,通常使用后缀名.zip,MIME格式为application/zip。其竞争者包括RAR格式以及开放源码的7z格式。
ZIP 文件格式是一种数据压缩和文档储存的文件格式,原名 Deflate,发明者为菲尔·卡茨,他于 1989 年 1 月公布了该格式的资料。ZIP 通常使用后缀名“.zip”,它的 MIME 格式为 application/zip。当前,ZIP 格式属于几种主流的压缩格式之一,其竞争者包括 RAR 格式以及开放源码的 7z 格式。
从性能上比较,RAR 及 7z 格式较 ZIP 格式压缩率较高,而 7-Zip 由于提供了免费的压缩工具而逐渐在更多的领域得到应用。Microsoft 从 Windows ME 操作系统开始内置对 zip 格式的支持,即使用户的电脑上没有安装解压缩软件,也能打开和制作 zip 格式的压缩文件,OS X 和流行的 Linux 操作系统也对 zip 格式提供了类似的支持。因此如果在网络上传播和分发文件,zip 格式往往是最常用的选择。
前身
1985 年一家名为 SEA(System Enhancement Associates,系统增强伙伴)的小公司开发了一个在 MS-DOS 平台下的商业压缩软件,名为 ARC。当时的软件发行方式与现在略有不同,用户购买了软件,除了得到软件的可执行文件还包括一份 C 语言的源代码。当时的卡茨与很多用计算机的平民一样,缺乏资金购买大量的商业软件,当时卡茨从网上下载了一份 ARC 的 C 语言源代码,并用汇编语言将其全新编写并编译出来。卡茨将这个软件名为:PKARC(Phillip Katz’ ARC)。卡茨制作的新软件 PKARC 因为是参照源代码编写的,所以完全兼容 ARC 并且性能上比 ARC 高。卡茨当时将这个新软件上传到网络上面。显然,卡茨此举造成对 SEA 公司的侵权。SEA 最初希望通过联络卡茨使 PKARC 成为 SEA 公司旗下的一款产品,后来卡茨拒绝了。最终,双方对簿公堂,结果是卡茨败诉,卡茨被判以对 SEA 公司的赔款以及停止发放 PKARC。后来,卡茨在研发过程中的 PKARC 续作也被迫重新改写所有代码,PKARC 其实就是下文提及的 PKZIP 的前身,但卡茨没有从 PKARC 赚到一分钱,还是穷困潦倒,又因为酗酒等众多原因,2000 年死在一个汽车旅馆中。
诞生
这场官司过后几周,卡茨就制作出新压缩软件 PKZIP(Phillip Katz’ ZIP),这款全新的软体比 ARC 的压缩率、压缩性能都要高许多,并且包含更多功能。此后,卡茨还将 ZIP 的所有技术参数公诸于众。ZIP(含义“速度”)这一名称是由卡茨的朋友罗伯特·马宏利(Robert Mahoney)建议的。他们想暗示,他们的产品比 ARC 在一定时间内更快速。这个名字往往被写成大写字母,因为在 DOS 系统内,通常都是使用大写字母作为后缀名的。(由于 MS-DOS 运行在 FAT 文件系统上)
Winzip 的面世
Windows 3.0 面世之前,有两种格式与 ZIP 同样流行,一个是 LHA(LHArc),另一个是 ARJ(Archiver Robert Jung),直至到 1995 年,这 3 种压缩格式都是 PC 应用的主流。之后,1995 年,微软发布了 Windows95,当时从 DOS 转移到 Windows 的用户们,极度渴求对图形界面下的优良软件,Winzip 以其优良的性能以及不太羞涩的图形用户界面吸引了用户的目光,在当时占有大量的市场占有量,其实,当时的 WinZip 仅仅是一个调用 DOS 资源的 GUI 外壳,但是其从 Windows 3 就开始的制作经验使其 GUI 性能和外观都比当时的流行软件要好。很快的,WinZip 就成为了当时一个很流行的软件。同时也带动了 ZIP 的传播,由于在前期太受欢迎,使到后期很多用户都以为,是 WinZip 创造了 ZIP,其实这是一个误解。
发展
因格式开放且免费。越来越多的软件内嵌支持开启 Zip 文件。这时,Zip 文件越来越像一个经过压缩的透明文件夹。
自 Windows Me 以来,Windows 内嵌支持打开以及压缩 Zip 文件一些下载软件的工具,支持部分下载 Zip 文件然后进行恢复。越来越多的软件内嵌支持打开 Zip 文件。几乎所有的压缩软件都支持打开及制作 Zip 文件。
危机
基本上,Zip 文件的发展都是由 PKware 公司与 Winzip 所推动。然而,其两家公司就某些问题上互相猜疑,导致发展缓慢。人们目前最想在 Zip 文件实现的目标,就是加强目前 Zip 文件的加密能力。就目前而言,Zip 的文件加密能力弱得可怜,仅凭单单一个口令保护,根本满足不了安全需求。虽然卡茨在世时公开了格式,但是当时制作的时候留有为日后升级的空间。而 Winzip 仅仅是一个用户,根本无法发布新标准,其标准的制订权依然保留在 PKware 手中。2002 年时,PKware 开发了支持 256 位 AES 加密的 PKZIP 5.0,但是 Winzip 在 2003 年发布的 Winzip 9 却被证明了无法与之兼容。双方都互相指责对方违背了 Zip 的自由开放精神。这是 Zip 自诞生日起,第一个对于它来说最严峻的挑战。
文件头
使用任何一种文本编辑器打开 Zip 文件,都能看到前两个字母为:PK
技术
ZIP 是一种相当简单的分别压缩每个文件的存档格式。分别压缩文件允许不必读取另外的数据而检索独立的文件;理论上,这种格式允许对不同的文件使用不同的算法。不管用何种方法,对这种格式的一个告诫是对于包含很多小文件的时候,存档会明显的比压缩成一个独立的文件(在类 Unix 系统中一个经典的例子是普通的 tar.gz 存档是由一个使用 gzip 压缩的 TAR 存档组成)要大。
ZIP 的规约指出文件可以不经压缩或者使用不同的压缩算法来存储。然而,在实际上,ZIP 几乎差不多总是在使用卡茨(Katz)的 DEFLATE 算法。
ZIP 支持基于对称加密系统的一个简单的密码,现在已知有严重的缺陷,已知明文攻击、字典攻击和暴力攻击。ZIP 也支持分卷压缩。
在近来一段时间,ZIP 加入了包括新的压缩和加密方法的新特征,不过这些新特征并没有被许多任务具所支持并且没有得到广泛应用。