`
zangwenyang
  • 浏览: 127771 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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测试)
分享到:
评论

相关推荐

    zip文件格式1

    Zip 文件格式详解 Zip 文件格式是一种广泛使用的压缩文件格式,由 Phil Katz 于 1989 年创造。它能够将多个文件压缩成一个文件,方便存储和传输。下面是对 Zip 文件格式的详细解释。 压缩源文件数据区 压缩源文件...

    JAR 文件格式以流行的 ZIP 文件格式为基础

    JAR文件是一种归档文件,以ZIP格式构建,以.jar为文件扩展名。...也可以使用其他zip压缩工具,不过压缩时zip文件头里的条目顺序很重要,因为Manifest文件常需放在首位。JAR文件内的文件名是Unicode文本。

    C++实现ZIP文件解压

    首先,ZIP文件格式是基于一种叫做PKWARE的DOS时代的压缩标准。ZIP文件通常包含一个中央目录,存储了所有压缩文件的元数据,如文件名、时间戳、压缩方法以及在ZIP文件内的位置。此外,每个文件的压缩数据分布在文件的...

    php生成zip文件类.zip

    1. **ZIP文件格式**: ZIP是一种通用的文件压缩格式,通常包含一个或多个压缩或未压缩的文件。ZIP文件可以用来存储和传输数据,通过将多个文件打包成一个单一的文件,可以节省存储空间和提高传输效率。 2. **PHP的...

    获取zip文件编码格式 cpdetector.zip

    "获取zip文件编码格式 cpdetector.zip" 是一个工具,它能够帮助我们识别ZIP文件内文本文件的编码格式。 这个工具的关键依赖于三个JAR文件:antlr-1.0.jar、cpdetector-1.08.jar和jchardet-1.0.jar。这些库提供了...

    C++压缩和解压ZIP文件,有演示代码

    ZipLib是一个开源库,专为C++设计,用于处理ZIP文件格式。 首先,我们要理解ZIP文件格式。ZIP是一种通用的文件压缩格式,它允许将多个文件和目录打包成单个文件,并可以同时进行压缩。ZIP文件内部包含了一个文件头...

    PHP在线压缩解压ZIP文件

    首先,我们来了解一下ZIP文件格式。ZIP是一种常见的文件归档格式,它可以将多个文件或目录打包成一个单一的文件,方便存储和传输。ZIP文件可以包含多种类型的文件,并且支持文件压缩,以减少存储空间占用。在PHP中...

    将一个目录内的内容打包到zip文件以及将zip文件解压到某个目录(ZipPack).zip

    4. **ZIP文件格式**:ZIP是一种常用的文件归档格式,可以将多个文件和目录打包成一个单一的文件,便于存储和传输。ZIP文件内部包含了一个文件头,记录了每个成员文件的信息,如文件名、压缩方法、时间戳等。zlib库...

    ucos移植zlib和zip文件解压缩

    2. 处理ZIP文件格式:理解ZIP文件的内部结构,包括中央目录记录、本地文件头和数据区。这些部分分别包含了文件名、压缩方法、压缩时间等信息,以及压缩数据的实际位置。 3. 解析ZIP文件:在UCOS应用中,通过UNZIP库...

    IOS应用源码之创建以及解压加密zip文件 .zip

    1. **ZIP文件格式**:ZIP是一种广泛使用的文件归档格式,可以将多个文件和目录打包成一个单一的文件,方便传输和存储。ZIP文件可以包含压缩或未压缩的数据,并支持多种压缩算法。 2. **加密ZIP文件**:为了保护ZIP...

    ozip改成zip文件.rar

    首先,我们来了解一下OZIP和ZIP文件格式的区别。OZIP是OPPO公司为其设备定制的一种固件格式,它可能包含了特定的加密和校验机制,以保证固件的安全性和完整性。而ZIP是一种广泛使用的通用压缩格式,许多刷机工具和...

    Android对Zip文件的加压和解压

    首先,我们要了解Zip文件格式。Zip是一种广泛使用的档案格式,它可以将多个文件和目录打包成一个单一的文件,方便存储和传输。在Android中,我们可以使用内置的`java.util.zip`库来处理Zip文件,这个库提供了对Zip...

    zip文件压缩解压源码 (c++)

    总结来说,`zip文件压缩解压源码(C++)`涉及的关键技术包括:理解zip文件格式,使用C++进行文件操作,选择和应用压缩算法,以及错误处理。通过分析和理解`XUnzip.cpp`和`XZip.cpp`,我们可以学习如何在C++环境中...

    java多文件压缩成zip文件并实现下载

    首先,我们需要了解Java中的`java.util.zip`包,这个包提供了对ZIP文件格式的支持。`ZipOutputStream`类用于创建ZIP文件,它可以接受一个`OutputStream`实例,通过调用`putNextEntry`和`write`方法来添加新的ZIP条目...

    C++开源zip压缩库文件原码,可直接引用

    首先,我们来了解ZIP文件格式。ZIP是一种常用的文件归档格式,它能够将多个文件或目录打包到一个单一的文件中,以便于存储、传输和分发。ZIP文件通常包含一个或多个压缩或未压缩的数据块,每个块对应原始文件的一个...

    示例ZIP文件1MB.zip_zip

    ZIP文件格式的核心在于它的容器特性,它允许将多个文件打包成一个单一的文件,方便管理和分发。每个包含在ZIP文件中的文件都有自己的元数据,如文件名、创建日期、修改日期、权限信息以及压缩算法等。ZIP格式支持...

    ZLib + minizip实现ZIP文件压缩解压缩

    ZLib是一个高效的压缩库,而minizip是ZLib的一个扩展,提供了更高级别的接口,用于处理ZIP文件格式。 ZLib是由Jean-loup Gailly和Mark Adler开发的,它提供了数据压缩和解压缩的算法,如DEFLATE,这是许多文件格式...

    在服务器上解zip包的php程序

    包内有两个文件 ... 不需要zip库的支持,任何地方可用 用法: 把zip 文件比如说foo.zip与这...就会把zip文件解压到当前目录,当然,php必须有写这个目录的权限 支持命令行使用 欢迎到 codebase.hualiuliu.com 贴上好的程序

    C语言实现Zip压缩解压.rar

    ZIP文件格式的标准由PKWARE公司制定,并由Info-ZIP组织进行开源实现。在C语言中实现ZIP操作,我们需要理解其内部结构和算法。 首先,ZIP文件的基本结构包括一个中央目录和多个本地文件头。每个本地文件头包含文件的...

    zip文件加密

    1. **ZIP文件格式**:ZIP是一种流行的文件存档格式,它能将多个文件和目录打包成一个单一的文件,便于存储和共享。ZIP格式支持多种压缩算法,如DEFLATE,提供了一种高效的数据压缩方法。 2. **文件加密**:ZIP文件...

Global site tag (gtag.js) - Google Analytics