zip包格式分析

2023-05-05  本文已影响0人  逍遥才子

ZIP包的格式是一种二进制格式,它由一系列字节组成,每个字节都有特定的含义。下面是ZIP包格式中常见的字节和它们的含义:

  1. 文件头标识符(Local File Header):标识文件的开始。

    • 字节1-4: 0x50 0x4B 0x03 0x04(固定值)
    • 字节5-6: 压缩方法(例如,0x08 表示使用 DEFLATE 压缩)
    • 字节7-8: 一些标志位,如是否加密、是否有数据描述符等
    • 字节9-10: 压缩时间
    • 字节11-12: 压缩日期
    • 字节13-16: CRC32 校验和
    • 字节17-20: 压缩后的文件大小
    • 字节21-24: 解压缩后的文件大小
    • 字节25-26: 文件名长度
    • 字节27-28: 扩展字段长度
    • 字节29-x: 文件名
    • 字节x+1-x+y: 扩展字段(可选)
    • 字节x+y+1-末尾: 压缩数据
  2. 数据描述符(Data Descriptor):提供文件的一些信息,如 CRC32 校验和、压缩后的文件大小和解压缩后的文件大小。

    • 字节1-4: 0x50 0x4B 0x07 0x08(固定值)
    • 字节5-8: CRC32 校验和
    • 字节9-12: 压缩后的文件大小
    • 字节13-16: 解压缩后的文件大小
  3. 中央目录文件头(Central Directory File Header):包含每个文件的信息,用于存储整个 ZIP 包的目录结构。

    • 字节1-4: 0x50 0x4B 0x01 0x02(固定值)
    • 字节5-6: 版本号
    • 字节7-8: 版本需要的最低版本
    • 字节9-10: 通用标志位
    • 字节11-12: 压缩方法
    • 字节13-14: 压缩时间
    • 字节15-16: 压缩日期
    • 字节17-20: CRC32 校验和
    • 字节21-24: 压缩后的文件大小
    • 字节25-28: 解压缩后的文件大小
    • 字节29-30: 文件名长度
    • 字节31-32: 扩展字段长度
    • 字节33-34: 注释长度
    • 字节35-36: 磁盘编号开始
    • 字节37-38: 内部文件属性
    • 字节39-42: 外部文件属性
    • 字节43-46: 文件头相对位移

Local File Header(文件头标识符)是ZIP包中的一个重要部分,它包含了文件的基本信息和文件数据。下面是Local File Header的详细解释:

  1. 字节1-4: 标识符(Signature)

    • 固定值:0x50 0x4B 0x03 0x04
  2. 字节5-6: 压缩方法(Compression Method)

    • 指定文件的压缩方法,常见的压缩方法包括:
      • 0x00:无压缩
      • 0x08:DEFLATE 压缩方法(最常用的压缩方法)
  3. 字节7-8: 通用标志位(General Purpose Bit Flag)

    • 指定了一些标志位的值,用于标识文件的特性,比如是否加密、是否有数据描述符等。
  4. 字节9-10: 压缩时间(Compression Time)

    • 压缩时间的值由两个字节表示,以DOS格式存储。
  5. 字节11-12: 压缩日期(Compression Date)

    • 压缩日期的值由两个字节表示,以DOS格式存储。
  6. 字节13-16: CRC32 校验和(CRC32 Checksum)

    • 用于校验文件内容的完整性,采用CRC32算法计算得出。
  7. 字节17-20: 压缩后的文件大小(Compressed Size)

    • 文件在压缩后的大小,以字节为单位。
  8. 字节21-24: 解压缩后的文件大小(Uncompressed Size)

    • 文件在解压缩后的大小,以字节为单位。
  9. 字节25-26: 文件名长度(File Name Length)

    • 文件名的长度,以字节为单位。
  10. 字节27-28: 扩展字段长度(Extra Field Length)

    • 扩展字段的长度,以字节为单位。
  11. 字节29-x: 文件名(File Name)

    • 文件的名称,以字符串形式表示。
  12. 字节x+1-x+y: 扩展字段(Extra Field)

    • 可选的扩展字段,用于存储额外的文件信息。
  13. 字节x+y+1-末尾: 压缩数据(Compressed Data)

    • 文件的压缩数据,即实际的文件内容。

Local File Header定义了ZIP包中每个文件的起始位置和文件的基本信息,包括压缩方法、时间戳、文件大小等。这些信息使得ZIP包能够存储和还原文件,并支持文件的压缩和解压缩操作。

上一篇下一篇

猜你喜欢

热点阅读