ZIP文件格式分析
刚分析完RAR文件格式,一想,干脆把ZIP文件格式也分析了吧
不过ZIP文件格式有官方文档,比较详细,这里也就是理解加翻译了一下。英文不好,菜哭。
后面有时间会加入实例分析环节。
1、ZIP简介
ZIP文件格式
是一种数据压缩
和文档储存
的文件格式,原名Deflate
,发明者为菲尔·卡茨(Phil Katz)
,他于1989年1月
公布了该格式的资料。该格式最初在PKWARE,Inc .的PKZIP
实用程序中实现,替代了以前由Thom Henderson发明的ARC压缩格式
。ZIP通常使用后缀名“.zip”
,也使用“.zipx ”
(较新的压缩算法)。ZIP被许多程序用作基本文件格式,通常使用不同的名称。它的MIME格式
(Multipurpose Internet Mail Extensions)为application/zip
。
目前,ZIP格式属于几种主流的压缩格式之一,其竞争者包括RAR格式
以及开放源码的7z格式
。从性能上比较,RAR及7z格式较ZIP格式压缩率较高
,而7-Zip由于提供了免费的压缩工具而逐渐在更多的领域得到应用。Microsoft从Windows ME
操作系统开始内置对zip格式的支持,即使用户的电脑上没有安装解压缩软件,也能打开和制作zip格式的压缩文件,OS X
和流行的Linux
操作系统也对zip格式提供了类似的支持。因此如果在网络上传播和分发文件,zip格式往往是最常用的选择。
ZIP是一种压缩文件格式,支持无损数据压缩
。一个ZIP文件可能包含一个或多个
已压缩的文件
或目录
。ZIP文件格式允许多种压缩算法
。使用压缩时,必须使用已记录的压缩算法之一。压缩方法8(Deflate)
是大多数ZIP兼容应用程序默认使用的方法。
1.1、版本历史
.ZIP
文件格式规范具有其自己的版本号
,该版本号不一定与PKZIP工具的版本号
相对应,尤其是在PKZIP 6
或更高版本
中。在不同的时间,PKWARE添加了一些初步功能
,这些功能允许PKZIP产品使用高级功能
提取压缩文件,但是创建
此类压缩文件的PKZIP产品要等到下一个主要发行版本
才可用。其他公司或组织
以自己的步调支持PKWARE规范
。
.ZIP
文件格式规范正式命名为“ APPNOTE-.ZIP文件格式规范
”,并且自1990年代末开始在PKWARE.com
网站上发布。该规范的多个版本尚未发布。某些功能的规范(例如BZIP2压缩
,强大的加密规范
(strong encryption specification)等)是在创建后几年由PKWARE发布的。在PKWARE网站上多次更改了在线规范的URL。
各种版本的PKWARE规范的主要改进的摘要:
2.0
- (1993) 可以使用DEFLATE压缩文件条目,并使用传统的PKWARE加密(ZipCrypto)。2.1
- (1996) Deflate64压缩。4.5
- (2001) 已记录的64位zip格式。4.6
- (2001) BZIP2压缩(直到APPNOTE 5.2发布时才在线发布)。5.0
- (2002) SES:加密支持DES、Triple DES、RC2、RC4(直到APPNOTE 5.2发布时才在线发布)。5.2
- (2003) SES(未在线发布的APPNOTE 5.1中定义)和WinZip(AE-x)的AES加密支持;SES加密支持的RC2-64的更正版本。6.1
- (2004) 已记录的证书存储。6.2.0
- (2004) 已记录的中心目录(Central Directory)加密。6.3.0
- (2006) 已记录的Unicode(UTF-8)文件名存储。支持的哈希,压缩(LZMA,PPMd +),加密算法的扩展列表。6.3.1
- (2007) 已更正的SHA-256/384/512的标准哈希值。6.3.2
- (2007) 已记录的压缩方法97(WavPack)。6.3.3
- (2012) 文档格式更改,使用JTC 1/SC 34 N 1621指示的JTC 1参考解释性报告(RER)等方法,以方便从其他标准参考PKWARE应用说明。6.3.4
- (2014) 更新PKWARE,Inc.官方地址。6.3.5
- (2018) 已记录的压缩方法16、96和99,DOS时间戳时间和精度,为密钥和解密增加了额外字段,以及错别字和说明。6.3.6
- (2019) 更正了印刷错误。
WinZip
从版本12.1
开始,对于使用压缩方法
比DEFLATE
更新的ZIP文件使用扩展名.zipx
。特别是方法BZip
、LZMA
、PPMd
、Jpeg
和Wavpack
。当选择“最佳方法”
压缩时,后两种将应用于适当的文件类型。
2、ZIP文件
2.1、什么是ZIP文件
ZIP文件可以由标准.ZIP
文件扩展名标识,尽管不需要使用文件扩展名。使用.ZIPX
扩展名也可以用于识别ZIP文件。其他使用ZIP格式
的常见文件扩展名包括.JAR
、.WAR
、.DOCX
、.XLSX
、.PPTX
、.ODT
、.ODS
、.ODP
等。读取
或写入
ZIP文件的程序应依靠本文档中描述的内部记录签名
来标识这种格式的文件。
ZIP文件应至少包含一个文件
,并且可以包含多个文件
。
数据压缩
可以用来减少放置在ZIP文件中的文件的大小,但这不是必需
的。此格式支持使用多种数据压缩算法
。使用压缩时,必须使用已记录
的压缩算法之一。建议实验者对他们的数据进行试验,以确定哪种可用算法可以提供最佳压缩以满足他们的需求。压缩方法8(Deflate)
是大多数ZIP兼容应用程序默认
使用的方法。
数据加密
可以用来保护ZIP文件中的文件。在这种格式下,加密支持的加密方法
包括密码
和公用/专用密钥
。可以单独
使用或结合
使用。加密可以应用于单个文件。可以通过加密ZIP文件的存储在中心目录(Central Directory)中的元数据
来增加额外的安全性。
必须使用CRC32
为每个文件提供数据完整性
。
通过使用数字签名
,可以包括其他数据完整性
。 单个文件
可以使用一个
或多个
数字签名进行签名。 中心目录(Central Directory)
(如果签名)必须使用单个
签名。
文件可以放在未压缩
或存储
的ZIP文件中。本文档中使用的术语“存储
”是指文件被复制到未压缩的ZIP文件中。
放置在ZIP文件中的每个数据文件
都可以进行压缩
,存储
,加密
或与同一ZIP文件中其他数据文件的存档方式无关的数字签名
。
ZIP文件可以流式传输
,分段
(在固定或可移动的媒体上)或“自解压
”。 自解压ZIP文件
必须在ZIP文件中包含目标平台
的提取代码。
ZIP的常见用法
或许还包括清单文件的使用
。 清单文件
将应用程序的特定信息存储在已存储在ZIP文件中的文件
中。 这个清单文件
应该是ZIP文件中的第一个文件
。 该规范(官方文档)不提供任何有关在ZIP文件中使用清单文件的信息或指南。
ZIP文件可以放在其他ZIP文件
中。
2.2、ZIP元数据(ZIP Metadata)
ZIP文件由元数据
标识,元数据由定义的记录类型
组成,这些记录类型
包含维护放置在ZIP文件中的文件所需的存储信息
。 每个记录类型必须使用标识记录类型的头标识
来标识。 标识值
以两个字节的常量标记0x4b50
开头,代表字符“PK
”。
2.3、.ZIP文件的常规格式
一个ZIP文件必须包含“中心目录结束记录
(End of Central Directory Record)”。 仅包含“中心目录结束记录
(End of Central Directory Record)”的ZIP文件被视为空ZIP文件
。 可以在ZIP文件中添加
或替换
文件,也可以删除
文件。 一个ZIP文件必须只有一个
“中心目录结束记录(End of Central Directory Record)”。 本规范中定义的其他记录
可以根据需要用于支持单个
ZIP文件的存储要求
。
在ZIP文件中的每个文件
的前面都必须有一个该文件的“本地文件头
(Local File Header)”记录。 每个“本地文件头
(Local File Header)”都必须在ZIP文件的中心目录
(Central Directory)部分中随附一个相应的“中心目录头
(Central Directory Header)”记录。
文件可以在ZIP文件中以任意顺序
存储。 一个ZIP文件可以分割成多个卷
,也可以分成用户定义的段大小
。 除非本文档中为特定数据元素
另外指定,否则所有值都必须以小端字节顺序
存储。
压缩
不得应用于“本地文件头
(Local File Header)”,“加密头
(encryption header)”或“中心目录结束记录
(End of Central Directory Record)”。 单个
“中心目录记录
(Central Directory Records)”绝不能压缩,但是所有“中心目录记录
(Central Directory Records)”的总和
可以压缩。
文件数据
后可以跟文件的“数据描述符
(Data Descriptor)”。 数据描述符用于促进ZIP文件流传输
。
2.3.1、.ZIP文件整体布局
1 | [local file header 1] - 本地文件头1 |
2.3.2、本地文件头(Local File Header)
字段名称 | 长度(byte) | 说明 |
---|---|---|
Local file header signature | 4 | 文件头标识,固定值(50 4B 03 04) |
Version needed to extract | 2 | 解压文件所需的ZIP最低版本 |
General purpose bit flag | 2 | 通用位标志 |
Compression method | 2 | 压缩方式 |
Last mod file time | 2 | 文件最后修改时间 |
Last mod file date | 2 | 文件最后修改日期 |
CRC-32 | 4 | 未压缩数据的CRC32 |
Compressed size | 4 | 压缩后的大小 |
Uncompressed size | 4 | 未压缩的大小 |
File name length | 2 | 文件名长度 |
Extra field length | 2 | 扩展区域长度 |
File name | N | 文件名 |
Extra field | N | 扩展区域 |
扩展区域包含各种可选数据,例如特定于OS的属性。它分为多个块,每个块具有16位ID码和16位长度。紧随其后的是压缩数据。
2.3.3、文件数据(File data)
应将文件的压缩
或存储
数据紧随在本地文件头
(Local File Header)后。如果文件已加密
,则文件的加密头
(encryption header)应放置在本地文件头
(Local File Header)之后和文件数据
之前。 对于.ZIP压缩文档中的每个文件
,重复执行一系列的[本地文件头][加密头][文件数据][数据描述符]
结构。
0字节文件
,目录
和其他不包含任何内容的文件类型
,不得包含文件数据
。
2.3.4、数据描述符(Data descriptor)
字段名称 | 长度(byte) | 说明 |
---|---|---|
Optional data descriptor signature | 4 | (可选的)数据描述符标识,固定值(50 4B 07 08) |
CRC-32 | 4 | 未压缩数据的CRC32 |
Compressed size | 4 | 压缩后的大小 |
Uncompressed size | 4 | 未压缩的大小 |
如果设置了通用位标志
的位3
,则该描述符必须存在(见下文)。 它按字节对齐
,紧随压缩数据的最后一个字节。仅在无法在输出的.ZIP文件中查找
时(例如,当输出.ZIP文件是标准输出
或不可搜索的设备
时),才应使用此描述符。对于ZIP64(tm)
格式的压缩文件,压缩
和未压缩
的大小均为8个字节。
压缩文件
时,当文件大小超过0xFFFFFFFF
时,压缩
和未压缩
的大小应以ZIP64格式
(作为8字节
的值)存储。 但是,无论文件大小如何
,都可以使用ZIP64格式
。 解压缩
时,如果该文件存在ZIP64扩展信息扩展区域
,则压缩
和未压缩
的大小将为8字节
的值。
尽管最初
未指定标识,但通常将值0x08074B50
用作数据描述符记录的标识值
。 实现者应注意,在读取ZIP文件以确保兼容性
时,无论是否带有此标识标记的数据描述符,都可能会遇到ZIP文件,无论哪种情况都应说明。
写ZIP文件
时,实现者应包括标记数据描述符记录的标识值。 使用标识
时,当前为数据描述符记录定义的字段将紧随标识之后。
可扩展的数据描述符
将在此APPNOTE的将来版本中发布。 此新记录旨在解决先前使用此记录的冲突
,并为流文件处理
提供更好的支持。
当使用中心目录加密
方法时,数据描述符记录不是必需的
,但可以使用。 如果存在
,并且通用位标记
的位3
被设置为指示其存在,则数据描述符记录
的字段中的值必须设置为二进制0
。
2.3.5、压缩文档解密头(Archive decryption header)
ZIP格式规范的6.2版
中引入了压缩文档解密头
。 该记录的存在是对作为本文档中所述的强加密规范
的一部分实现的中心目录加密功能
的支持。当中心目录结构已加密
时,此解密头
必须位于加密数据段
之前。
加密的数据段
应包含压缩文档扩展数据记录
(如果存在)和加密的中心目录结构数据
。 该数据记录
的格式与压缩文件数据
之前的加密头记录
相同。 如果中心目录结构已加密
,则使用“ZIP64中心目录结束记录
(ZIP64 end of central directory record)”中的“中心目录的开始
(Start of Central Directory)”字段确定此数据记录的开始位置
。 有关压缩文档解密头记录
中使用的字段的信息,请参阅“强加密规范”部分。
2.3.6、压缩文档扩展数据记录(Archive extra data record)
字段名称 | 长度(byte) | 说明 |
---|---|---|
Archive extra data signature | 4 | 压缩文档扩展数据标识,固定值(50 4B 06 08) |
Extra field length | 4 | 扩展区域长度 |
Extra field data | N | 扩展区域 |
ZIP格式规范的6.2版
中引入了Archive Extra Data Record
。 该记录可以用于支持作为本文档中所述的强加密规范
的一部分实现的中心目录加密功能
。当该记录存在时,该记录必须紧随中心目录数据结构
之前。
该数据记录的大小应包含在中心目录结束记录
(End of central directory record)的中心目录大小
(Size of the Central Directory)字段中。 如果中心目录结构已压缩
,但未加密
,则使用“ZIP64中心目录结束记录
(ZIP64 end of central directory record)”中的“中心目录的开始
(Start of Central Directory)”字段确定此数据记录的起始位置
。
2.3.7、中心目录结构(Central directory structure)
1 | [central directory header 1] - 中心目录头1 |
中心目录头(Central directory header):
字段名称 | 长度(byte) | 说明 |
---|---|---|
Central directory file header signature | 4 | 中心目录文件头标识,固定值(50 4B 01 02) |
Version made by | 2 | 压缩所用的ZIP版本 |
Version needed to extract | 2 | 解压文件所需的ZIP最低版本 |
General purpose bit flag | 2 | 通用位标记 |
Compression method | 2 | 压缩方法 |
Last mod file time | 2 | 文件最后修改时间 |
Last mod file date | 2 | 文件最后修改日期 |
CRC-32 | 4 | 未压缩数据的CRC32 |
Compressed size | 4 | 压缩后的大小 |
Uncompressed size | 4 | 未压缩的大小 |
File name length | 2 | 文件名长度 |
Extra field length | 2 | 扩展区域长度 |
File comment length | 2 | 文件注释长度 |
Disk number start | 2 | 文件开始位置所在的磁盘编号 |
Internal file attributes | 2 | 内部文件属性 |
External file attributes | 4 | 外部文件属性 |
Relative offset of local header | 4 | 本地文件头的相对偏移 |
File name | N | 文件名 |
Extra field | N | 扩展区域 |
File comment | N | 文件注释 |
数字签名(Digital signature):
字段名称 | 长度(byte) | 说明 |
---|---|---|
Header signature | 4 | 头标识,固定值(50 4B 05 05) |
Size of data | 2 | 数据的大小 |
Signature data | N | 签名数据 |
随着本规范6.2版中中心目录加密功能
的引入,中心目录结构
(Central directory structure)可以以压缩并加密
的方式存储。 尽管不是必需的,但在加密中心目录结构
时假定它会被压缩
以提高存储效率
。有关中心目录加密功能
的信息可以在描述强加密规范
(Strong Encryption Specification)的部分中找到。数字签名记录
(Digital signature)将不会被压缩或加密。
2.3.8、ZIP64中心目录结束记录(ZIP64 end of central directory record)
字段名称 | 长度(byte) | 说明 |
---|---|---|
ZIP64 end of central directory record signature | 4 | ZIP64中心目录结束记录标识,固定值(50 4B 06 06) |
Size of ZIP64 end of central directory record | 8 | ZIP64中心目录结束记录的大小 |
Version made by | 2 | 压缩所用的ZIP版本 |
Version needed to extract | 2 | 解压文件所需的ZIP最低版本 |
Number of this disk | 4 | 当前磁盘编号 |
Number of the disk with the start of the central directory | 4 | 中心目录开头所在的磁盘号 |
Total number of entries in the central directory on this disk | 8 | 该磁盘上中心目录的条目总数 |
Total number of entries in the central directory | 8 | 中心目录中的条目总数 |
Size of the central directory | 8 | 中心目录的大小 |
Offset of start of central directory with respect to the starting disk number | 8 | 中心目录开始位置相对于压缩文档开始位置的偏移 |
ZIP64 extensible data sector | N | ZIP64扩展数据段 |
存储在“ZIP64中心目录结束记录的大小
(Size of ZIP64 end of central directory record)”中的值应为剩余记录
的大小,并且不应包含前导的12个字节
。1
Size = SizeOfFixedFields(固定字段) + SizeOfVariableData(可变数据)- 12
上面的记录结构定义了ZIP64中心目录结束记录
的版本1
。 为了支持ZIP64大文件功能
,在6.2之前
的版本中实现了版本1
。 作为强加密规范
的一部分,在版本6.2
中实现的中心目录加密功能
的引入定义了此记录结构的版本2
。 有关此记录的版本2格式的详细信息,请参阅描述“强加密规范”的部分。
特殊用途的数据
可以位于该记录的V1或V2版本后面的ZIP64扩展数据段
中。为了确保识别
此特殊用途的数据,它必须包括一个由以下内容组成的识别头块
:
字段名称 | 长度(byte) | 说明 |
---|---|---|
Header ID | 2 | 头ID字段指示随后的数据块中数据的数据类型。 |
Data Size | 4 | 数据大小标识此数据块类型后面的数据的字节数。 |
可能存在多个
特殊用途的数据块。 每一个必须以Header ID
和Data Size
字段为先导字段
。 当前该字段中支持的Header ID值的映射
如附录C
中所定义。
2.3.9、ZIP64中心目录结束定位器(ZIP64 end of central directory locator)
字段名称 | 长度(byte) | 说明 |
---|---|---|
ZIP64 end of central directory locator signature | 4 | ZIP64中心目录结束定位器标识,固定值(50 4B 06 07) |
Number of the disk with the start of the zip64 end of central directory | 4 | ZIP64中心目录开头所在的磁盘号 |
Relative offset of the zip64 end of central directory record | 8 | ZIP64中心目录结束记录相对偏移 |
Total number of disks | 4 | 磁盘总数 |
2.3.10、中心目录结束记录(End of central directory record)
字段名称 | 长度(byte) | 说明 |
---|---|---|
End of central directory signature | 4 | 中心目录结束标识,固定值(50 4B 05 06) |
Number of this disk | 2 | 当前磁盘编号 |
Number of the disk with the start of the central directory | 2 | 中心目录开头所在的磁盘号 |
Total number of entries in the central directory on this disk | 2 | 该磁盘上中心目录的条目总数 |
Total number of entries in the central directory | 2 | 中心目录的条目总数 |
Size of the central directory | 4 | 中心目录的大小 |
Offset of start of central directory with respect to the starting disk number | 4 | 中心目录开始位置相对于压缩文档开始位置的偏移 |
.ZIP file comment length | 2 | .ZIP文件注释长度 |
.ZIP file comment | N | .ZIP文件注释 |
2.4、字段解释
2.4.1、字段的一般说明
除非另有说明,否则所有字段均为无符号数据类型
,并以Intel低字节:高字节
,低字节:高字节
顺序存储(小端模式
)。
字符串字段
不是以null
结尾的,因为长度是明确指定
的。
中心目录中的条目的顺序
可能不一定与文件在.ZIP文件
中出现的顺序
相同。
如果中心目录结束记录
的字段之一太小
而无法容纳所需的数据,则应将字段设置为-1(0xFFFF或0xFFFFFFFF)
,并应创建ZIP64格式的记录
。
拆分
或扩展
压缩文件时,中心目录结束记录
和ZIP64中心目录结束定位器记录
的务必驻留在同一磁盘
上。
2.4.2、压缩所用的ZIP版本(Version made by) (2 bytes)
高位字节
指示文件属性信息的兼容性。 如果外部文件属性
与MS-DOS兼容并且可以由DOS版本2.04g的PKZIP
读取,则该值将为零
。 如果这些属性不兼容
,则此值将标识属性兼容的主机系统
。 软件可以使用此信息来确定文本文件等的行记录格式
。
当前的映射为:1
2
3
4
5
6
7
8
9
10
110 - MS-DOS and OS/2(FAT/VFAT/FAT32 file systems)
1 - Amiga 2 - OpenVMS
3 - UNIX 4 - VM/CMS
5 - Atari ST 6 - OS/2 H.P.F.S.
7 - Macintosh 8 - Z-System
9 - CP/M 10 - Windows NTFS
11 - MVS (OS/390 - Z/OS) 12 - VSE
13 - Acorn Risc 14 - VFAT
15 - alternate MVS 16 - BeOS
17 - Tandem 18 - OS/400
19 - OS X (Darwin) 20 thru 255 - unused
低位字节
指示用于编码文件的软件支持的ZIP规范版本
(本文档的版本)。 value/10
表示主要版本号
,value mod 10
是次要版本号
。
2.4.3、解压文件所需的ZIP最低版本(Version needed to extract) (2 bytes)
解压文件所需的最低受支持ZIP规范版本
,如上映射。该值基于ZIP程序必须支持的特定格式功能
才能解压文件。如果将多个功能
应用于文件,则必须将最低版本设置为具有最高值的功能的版本值
。为了避免冲突,新功能
或功能更改
将使用比上次发布的值更高的版本号实现影响已发布的格式规范。
当前的最低功能版本
如下所示:
1.0
- Default value:默认值。1.1
- File is a volume label:文件是一个卷标。2.0
- File is a folder (directory):文件是一个文件夹(目录)。2.0
- File is compressed using Deflate compression:使用Deflate压缩方法
对文件进行压缩。2.0
- File is encrypted using traditional PKWARE encryption:使用传统的PKWARE加密
对文件进行加密。2.1
- File is compressed using Deflate64(tm):使用Deflate64(tm)压缩方法
对文件进行压缩。2.5
- File is compressed using PKWARE DCL Implode:使用PKWARE DCL Implode压缩
方法对文件进行压缩。2.7
- File is a patch data set:文件是补丁数据集。4.5
- File uses ZIP64 format extensions:文件使用ZIP64格式扩展
。4.6
- File is compressed using BZIP2 compression*:使用BZIP2压缩方法
对文件进行压缩。5.0
- File is encrypted using DES:使用DES
对文件进行加密。5.0
- File is encrypted using 3DES:使用3DES
对文件进行加密。5.0
- File is encrypted using original RC2 encryption:使用原始RC2加密
对文件进行加密。5.0
- File is encrypted using RC4 encryption:使用RC4加密
对文件进行加密。5.1
- File is encrypted using AES encryption:使用AES加密
对文件进行加密。5.1
- File is encrypted using corrected RC2 encryption**:使用更正的RC2加密
对文件进行加密。5.2
- File is encrypted using corrected RC2-64 encryption**:使用更正的RC2-64加密
对文件进行加密6.1
- File is encrypted using non-OAEP key wrapping*:使用non-OAEP密钥包装
对文件进行加密。6.2
- Central directory encryption:中心目录加密。6.3
- File is compressed using LZMA:使用LZMA压缩方法
对文件进行压缩。6.3
- File is compressed using PPMd+:使用PPMd+压缩方法
对文件进行压缩。6.3
- File is encrypted using Blowfish:使用Blowfish
对文件进行加密。6.3
- File is encrypted using Twofish:使用Twofish
对文件进行加密。
需要解压的版本注释:
PKZIP的7.x(7.2之前)的早期版本
错误地将BZIP2压缩
所需的提取版本设置为50
,但应将其设置为46
。
有关RC2校正
的更多信息,请参阅“强加密规范
”部分。
使用non-OAEP密钥包装
的证书加密是从6.1
开始的所有版本的预期操作模式
。当发送要由低于6.1(5.0或6.0)
的PKZIP版本打开的ZIP文件时,对OAEP密钥包装的支持只能用于向后兼容
。
使用PPMd+压缩
的文件必须将解压文件所需的版本
字段设置为6.3
,但是,并非所有ZIP程序都强制执行此操作,并且如果设置了该值,则可能无法解压缩
使用PPMd+压缩
的数据文件。
使用ZIP64扩展
时,还必须在ZIP64中心目录结束记录
中设置相应的值。 应该适当地设置该字段以指示使用的是版本1
还是版本2
格式。
2.4.4、通用位标志(General purpose bit flag) (2 bytes)
1 | Bit 0: 如果设置,表示文件已加密。 |
2.4.5、压缩方法(Compression method) (2 bytes)
0
- The file is stored (no compression):存储(无压缩)。1
- The file is Shrunk:文件缩小。2
- The file is Reduced with compression factor 1:待补充。3
- The file is Reduced with compression factor 2:待补充。4
- The file is Reduced with compression factor 3:待补充。5
- The file is Reduced with compression factor 4:待补充。6
- The file is Imploded:Imploding压缩算法。7
- Reserved for Tokenizing compression algorithm:为Tokenizing压缩算法保留。8
- The file is Deflated:Deflated压缩算法。9
- Enhanced Deflating using Deflate64(tm):加强的压缩算法Deflate64(tm)。10
- PKWARE Data Compression Library Imploding (old IBM TERSE):PKWARE DCL Implode压缩算法(旧的IBM TERSE压缩算法)。11
- Reserved by PKWARE:由PKWARE预留。12
- File is compressed using BZIP2 algorithm:BZIP2压缩算法。13
- Reserved by PKWARE:由PKWARE预留。14
- LZMA:LZMA压缩算法。15
- Reserved by PKWARE:由PKWARE预留。16
- IBM z/OS CMPSC Compression:IBM z/OS CMPSC压缩算法。17
- Reserved by PKWARE:由PKWARE预留。18
- File is compressed using IBM TERSE (new):IBM TERSE压缩算法(新的)。19
- IBM LZ77 z Architecture (PFS):IBM LZ77 z Architecture压缩算法。96
- JPEG variant:JPEG变种压缩算法。97
- WavPack compressed data:WavPack压缩算法。98
- PPMd version I, Rev 1:PPMd压缩算法版本1。99
- AE-x encryption marker (see APPENDIX E):AE-x加密标记(请参阅附录E)。
2.4.6、日期和时间字段(Date and Time fields) (2 bytes)
日期和时间以标准MS-DOS格式
编码。如果输入来自标准输入
,则日期和时间是开始对此数据进行压缩
的日期和时间。 如果加密了中心目录
并且设置了通用位标志13
以表示屏蔽,则存储在本地头中的值将为零。 MS-DOS时间格式
不同于计算机常用的时间格式,例如UTC
。 例如,MS-DOS使用相对于1980年和2秒精度的年份值
。
2.4.7、CRC-32 (4 bytes)
CRC-32
算法由David Schwaderer
慷慨贡献,可以在他的出色著作《 NetBIOS C程序员指南》中找到,该书由Howard W. Sams&Co. Inc.发行。CRC的“Magic Number
”为0xDEBB20E3
。使用了适当的CRC预处理
和后处理
,这意味着所有CRC寄存器被预处理了(起始值为0xFFFFFFFF
),并且该值通过对CRC残差进行补码
来进行后处理。如果设置了通用位标志的第3位
,则该字段在本地头中设置为零,并将正确的值
放在数据描述符
和中心目录
中。加密中心目录
时,如果本地头不是ZIP64格式
,并且设置了通用位标志13
以表示屏蔽,则本地头中存储的值将为零。
2.4.8、压缩文件的大小(Compressed size) (4 bytes)
2.4.9、未压缩文件的大小(Uncompressed size) (4 bytes)
压缩文件的大小
(2.4.8)和未压缩文件的大小
(2.4.9)。存在解密头
时,它将被放置在文件数据
的前面,并且压缩文件大小的值
将包括解密头的字节
。如果设置了通用位标志的位3
,则这些字段在本地头
中设置为零
,并且正确的值
放在数据描述符
和中心目录
中。如果压缩文件为ZIP64格式
,并且此字段中的值为0xFFFFFFFF
,则大小将在相应的8字节ZIP64扩展信息扩展字段
中。当加密中心目录
时,如果本地头
不是ZIP64格式,并且设置了通用位标志的位13
以表示屏蔽,则在本地头
中为未压缩文件大小
存储的值将为零
。
2.4.10、文件名长度(File name length) (2 bytes)
2.4.11、扩展区域长度(Extra field length) (2 bytes)
2.4.12、文件注释长度(File comment length) (2 bytes)
文件名
,扩展区域字段
和文件注释字段
的长度。任何目录记录
和这三个字段
的合计长度
通常不应超过65535
个字节。如果输入来自标准输入
,则文件名长度
设置为零。
2.4.13、文件开始位置所在的磁盘编号(Disk number start) (2 bytes)
该文件开始所在的磁盘编号。如果压缩文件为ZIP64格式
,并且此字段中的值为0xFFFF
,则此字段将在相应的4字节ZIP64扩展信息扩展字段
中。
2.4.14、内部文件属性(Internal file attributes) (2 bytes)
位1
和位2
保留供PKWARE使用。
如果设置
该字段的最低位
,则表明该文件显然是ASCII
或文本
文件。 如果未设置
,则该文件显然包含二进制数据
。其余位在1.0版
中未使用。
如果设置了此字段的0x0002位
,则表示每个逻辑记录
之前都有4字节可变记录长度控制字段
,指示记录的长度
。 记录长度控制字段以小端字节序
存储。 该标志独立于文本控制字符
,并且如果与文本数据
一起使用,则在记录的总长度
中包括所有控制字符
。 提供此值是为了支持大型数据传输
。
2.4.15、外部文件属性(External file attributes) (4 bytes)
外部属性的映射
取决于主机系统
(请参阅“Version made by”)。对于MS-DOS
,低位字节
是MS-DOS目录属性字节
。如果输入来自标准输入
,则此字段设置为0
。
2.4.16、本地文件头的相对偏移(Relative offset of local header) (4 bytes)
这是从此文件出现的第一个磁盘的开始
到本地头
的偏移量。 如果压缩文件为ZIP64格式
,并且此字段中的值为0xFFFFFFFF
,则此字段将在相应的8字节ZIP64扩展信息扩展字段
中。
2.4.17、文件名(File name) (N bytes)
文件名,带有可选的相对路径
。存储的路径不得包含驱动器
或设备字母
或前导斜杠
。为了与Amiga
和UNIX
文件系统兼容,所有斜杠必须为正斜杠“/”
,而不是反斜杠“\”
。如果输入来自标准输入
,则没有
文件名字段。
如果使用中心目录加密功能
,并且设置了通用位标志的位13
以表示屏蔽,则存储在本地头
中的文件名将不是实际的文件名
。将存储由唯一的十六进制值组成的掩码值
。对于压缩文件中的每个文件,此值将按顺序递增
。有关检索加密文件名的详细信息,请参见“强加密规范”部分。
2.4.18、文件注释(File comment) (N bytes)
此压缩文件的注释
。
2.4.19、当前磁盘号(Number of this disk) (2 bytes)
当前磁盘的编号,其中包含中心目录结束记录
。 如果压缩文件为ZIP64格式
,并且此字段中的值为0xFFFF
,则此字段将在相应的4字节
的ZIP64中心目录结束记录
中。
2.4.20、中心目录开头所在的磁盘号(Number of the disk with the start of the central directory) (2 bytes)
中心目录开头所在的磁盘号。 如果压缩文件为ZIP64格式
,并且此字段中的值为0xFFFF
,则此字段将在相应的4字节
的ZIP64中心目录结束记录
中。
2.4.21、该磁盘上中心目录的条目总数(Total number of entries in the central directory on this disk) (2 bytes)
该磁盘上中心目录的条目总数。如果压缩文件为ZIP64格式
,并且此字段中的值为0xFFFF
,则此字段将在相应的8字节
的ZIP64中心目录结束记录
中。
2.4.22、中心目录的条目总数(Total number of entries in the central directory) (2 bytes)
ZIP文件中的文件总数。如果压缩文件为ZIP64格式
,并且此字段中的值为0xFFFF
,则此字段将在相应的8字节
的ZIP64中心目录结束记录
中。
2.4.23、中心目录的大小(Size of the central directory) (4 bytes)
整个中央目录的大小(以字节
为单位)。 如果压缩文件为ZIP64格式
,并且此字段中的值为0xFFFFFFFF
,则此字段将在相应的8字节
的ZIP64中心目录结束记录
中。
2.4.24、中心目录开始位置相对于压缩文档开始位置的偏移(Offset of start of central directory with respect to the starting disk number) (4 bytes)
中心目录开始位置
相对于压缩文档开始位置
的偏移。如果压缩文件为ZIP64格式
,并且此字段中的值为0xFFFFFFFF
,则此字段将在相应的8字节
的ZIP64中心目录结束记录
中。
2.4.25、.ZIP文件注释长度(.ZIP file comment length) (2 bytes)
此.ZIP文件的注释长度。
2.4.26、.ZIP文件注释(.ZIP file comment) (N bytes)
此.ZIP文件的注释。ZIP文件注释数据不安全
地存储。目前没有加密
或数据认证
应用于此区域。机密信息不应存储在本节中。
2.4.27、ZIP64扩展数据段(ZIP64 extensible data sector) (N bytes)
目前保留供PKWARE使用。
2.4.28、扩展区域(Extra field) (N bytes)
在中心目录头
(Central directory header)中。
这应该被用于存储扩展
。如果出于特殊应用
或平台
的需要,需要在ZIP文件中存储其他信息,则应将其存储在此处。然后,支持该规范较早版本的程序可以安全地跳过这个文件,并找到下一个文件或头。在1.0版
中,该字段的长度为0。
现有的扩展字段
在随后的“可扩展数据字段
(Extensible data fields)”部分中定义。
2.5、可扩展的数据字段(Extensible data fields)
为了允许将不同的程序
和不同类型的信息
存储在.ZIP文件的“扩展”字段
中,对于在此字段中存储数据的所有程序,必须使用以下结构
:1
header1 + data1 + header2 + data2 . . .
每个头必须包括:
字段名称 | 长度(byte) | 说明 |
---|---|---|
Header ID | 2 | 头ID字段指示随后的数据块中数据的数据类型。 |
Data Size | 2 | 数据大小标识此数据块类型后面的数据的字节数。 |
注意:
所有字段以Intel低字节/高字节
顺序(小端字节序
)存储。
头ID字段指示随后的数据块中数据的数据类型。
头ID的0到31保留供PKWARE使用。其余的ID可以由第三方供应商用于专有用途。
PKWARE定义的当前头ID的映射
为:
0x0001
- Zip64 extended information extra field:ZIP64扩展信息扩展字段。0x0007
- AV Info:AV信息。0x0008
- Reserved for extended language encoding data (PFS)(see APPENDIX D):保留用于扩展语言编码数据(PFS)(请参阅附录D)0x0009
- OS/20x000A
- NTFS0x000C
- OpenVMS0x000D
- UNIX0x000E
- Reserved for file stream and fork descriptors:保留用于文件流和派生描述符。0x000F
- Patch Descriptor:补丁描述符。0x0014
- PKCS#7 Store for X.509 Certificates:X.509证书的PKCS#7存储。0x0015
- X.509 Certificate ID and Signature for individual file:X.509证书ID和单个文件的签名。0x0016
- X.509 Certificate ID for Central Directory:中心目录的X.509证书ID。0x0017
- Strong Encryption Header:强加密头。0x0018
- Record Management Controls:记录管理控制。0x0019
- PKCS#7 Encryption Recipient Certificate List:PKCS#7加密对象证书列表。0x0020
- Reserved for Timestamp record:为Timestamp记录保留。0x0021
- Policy Decryption Key Record:策略解密密钥记录。0x0022
- Smartcrypt Key Provider Record:Smartcrypt密钥提供者记录。0x0023
- Smartcrypt Policy Key Data Record:Smartcrypt策略密钥数据记录。0x0065
- IBM S/390 (Z390), AS/400 (I400) attributes - uncompressed:IBM S/390 (Z390), AS/400 (I400)属性 - 未压缩。0x0066
- Reserved for IBM S/390 (Z390), AS/400 (I400) attributes - compressed:为IBM S/390 (Z390), AS/400 (I400)属性保留 - 压缩。0x4690
- POSZIP 4690 (reserved):POSZIP 4690(保留)。
2.5.1、-ZIP64扩展信息扩展字段(ZIP64 Extended Information Extra Field)(0x0001)
以下是ZIP64扩展信息扩展块
的布局。如果本地
或中心目录记录
中的大小
或偏移量
字段之一太小而无法容纳所需的数据,则将创建一个ZIP64扩展信息记录
。ZIP64扩展信息记录中字段的顺序
是固定的,但是该字段必须仅在相应的本地
或中心目录记录
字段设置为0xFFFF
或0xFFFFFFFF
时显示。
注意:
所有字段以Intel低字节/高字节
顺序(小端字节序
)存储。
Value | Size(byte) | Description |
---|---|---|
0x0001 | 2 | 此“扩展”块类型的标签 |
Size | 2 | “扩展”块的大小 |
Original Size | 8 | 原始未压缩文件大小 |
Compressed Size | 8 | 压缩数据的大小 |
Relative Header Offset | 8 | 本地头记录的偏移量 |
Disk Start Number | 4 | 该文件开始所在的磁盘号 |
本地头
中的此项必须包含原始
和压缩
文件大小字段。如果对中心目录
进行加密并且设置了通用位标志的第13位
以指示屏蔽,则存储在本地头中的原始文件大小
的值将为0
。
2.5.2、-OS/2扩展字段(-OS/2 Extra Field)(0x0009)
以下是OS/2属性“扩展”块
的布局。( 最新修订日期为09/05/95)
注意:
所有字段以Intel低字节/高字节
顺序(小端字节序
)存储。
Value | Size(byte) | Description |
---|---|---|
0x0009 | 2 | 此“扩展”块类型的标签 |
TSize | 2 | 以下数据块的大小 |
BSize | 4 | 未压缩的块大小 |
CType | 2 | 压缩类型 |
EACRC | 4 | 解压缩块的CRC值 |
(var) | N | 压缩块 |
压缩OS/2扩展属性结构
(FEA2LIST),然后将其完整存储
在此结构中。 VarFields[]
中将永远只有一个“块”数据。
2.5.3、-NTFS扩展字段(-NTFS Extra Field)(0x000A)
以下是NTFS属性“扩展”块
的布局。( 注意:
目前,Mtime
,Atime
和Ctime
值可以在任何WIN32系统上使用。)
注意:
所有字段以Intel低字节/高字节
顺序(小端字节序
)存储。
Value | Size(byte) | Description |
---|---|---|
0x000A | 2 | 此“扩展”块类型的标签 |
TSize | 2 | 总“扩展”块的大小 |
Reserved | 4 | 保留以备将来使用 |
Tag1 | 2 | NTFS属性#1的标签 |
Size1 | 2 | 属性#1的大小,以字节为单位 |
(var) | Size1 | 属性#1数据 |
… | … | … |
TagN | 2 | NTFS属性#N的标签 |
SizeN | 2 | 属性#N的大小,以字节为单位 |
(var) | SizeN | 属性#N数据 |
对于NTFS,Tag1到TagN
的值如下:(当前仅为NTFS定义了一组属性)
Value | Size(byte) | Description |
---|---|---|
0x0001 | 2 | 属性#1的标签 |
Size1 | 2 | 属性#1的大小,以字节为单位 |
Mtime | 8 | 文件最后修改时间 |
Atime | 8 | 文件最后访问时间 |
Ctime | 8 | 文件创建时间 |
2.5.4、-OpenVMS扩展字段(-OpenVMS Extra Field)(0x000C)
以下是OpenVMS属性“扩展”块
的布局。
注意:
所有字段以Intel低字节/高字节
顺序(小端字节序
)存储。
Value | Size(byte) | Description |
---|---|---|
0x000C | 2 | 此“扩展”块类型的标签 |
TSize | 2 | 总“扩展”块的大小 |
CRC | 4 | 剩余块的32位CRC |
Tag1 | 2 | OpenVMS属性#1的标签 |
Size1 | 2 | 属性#1的大小,以字节为单位 |
(var) | Size1 | 属性#1数据 |
… | … | … |
TagN | 2 | OpenVMS属性#N的标签 |
SizeN | 2 | 属性#N的大小,以字节为单位 |
(var) | SizeN | 属性#N数据 |
OpenVMS扩展字段规则:
将存在一个
或多个
属性,每个属性之前都带有上述TagX
和SizeX
值。 这些值与在OpenVMS C下的ATR.H中定义的ATR$C_XXXX
和ATR$S_XXXX
常数相同。这两个值都不为0
。
不执行字对齐或填充
。
行为良好的PKZIP/OpenVMS
程序不应产生具有相同TagX值
的多个子块
。 另外,在特定的目录记录中,不得存在多个0x000C
类型的“扩展”块。
2.5.5、-UNIX扩展字段(-UNIX Extra Field)(0x000D)
以下是UNIX“扩展”块
的布局。
注意:
所有字段以Intel低字节/高字节
顺序(小端字节序
)存储。
Value | Size(byte) | Description |
---|---|---|
0x000D | 2 | 此“扩展”块类型的标签 |
TSize | 2 | 以下数据块的大小 |
Atime | 4 | 文件最后访问时间 |
Mtime | 4 | 文件最后修改时间 |
Uid | 2 | 文件用户ID |
Gid | 2 | 文件组ID |
(var) | N | 可变长度数据字段 |
可变长度数据字段
将包含特定于文件类型的数据。当前,唯一允许的值为硬链接或符号链接“链接到”的原始文件名
,以及字符
和块设备节点的主要和次要设备节点号
。由于设备节点
不能是符号链接或硬链接,因此仅存储一组可变长度数据。链接文件
将具有存储的原始文件的名称。此名称不是以NULL
终止的。可以通过检查TSize -12
来确定其大小。设备条目
将有8个字节
存储为两个4字节条目
(采用小端序
格式)。第一个条目将是主设备号
,第二个条目是次设备号
。
2.5.6、-PATCH描述符扩展字段(-PATCH Descriptor Extra Field)(0x000F)
以下是PATCH描述符“扩展”块
的布局。
注意:
所有字段以Intel低字节/高字节
顺序(小端字节序
)存储。
Value | Size(byte) | Description |
---|---|---|
0x000F | 2 | 此“扩展”块类型的标签 |
TSize | 2 | 总“扩展”块的大小 |
Version | 2 | 描述符的版本 |
Flags | 4 | Actions和reactions(见下文) |
OldSize | 4 | 被打补丁的文件大小 |
OldCRC | 4 | 被打补丁的文件CRC32 |
NewSize | 4 | 结果文件的大小 |
NewCRC | 4 | 结果文件的CRC32 |
Actions和reactions:
Bits | Description |
---|---|
0 | 用于自动检测 |
1 | 视为自修补程序 |
2-3 | 保留 |
4-5 | Actions(见下文) |
6-7 | 保留 |
8-9 | 对缺少文件的reactions(见下文) |
10-11 | 对较新文件的reactions(见下文) |
12-13 | 对位置文件的reactions(见下文) |
14-15 | 保留 |
16-31 | 保留 |
Actions:
Action | Value |
---|---|
none | 0 |
add | 1 |
delete | 2 |
patch | 3 |
reactions:
Action | Value |
---|---|
ask | 0 |
skip | 1 |
ignore | 2 |
fail | 3 |
补丁程序
支持是由PKPatchMaker(tm)技术提供的,并受美国专利和正在审理的专利
保护。在产品中使用
或实现
当前附录中规定的某些技术方面(包括与强加密
或补丁
相关的方面)需要获得PKWARE的许可。
2.5.7、-X.509证书的PKCS#7存储(-PKCS#7 Store for X.509 Certificates)(0x0014)
该字段必须包含有关可以用来签名的每个证书文件
的信息。当为ZIP文件启用中心目录加密功能
时,该记录将出现在“压缩文档扩展数据记录
(Archive extra data record)”中,否则将出现在第一个中心目录记录
中,而在任何其他记录
中将被忽略
。
注意:
所有字段以Intel低字节/高字节
顺序(小端字节序
)存储。
Value | Size(byte) | Description |
---|---|---|
0x0014 | 2 | 此“扩展”块类型的标签 |
TSize | 2 | 存储的数据的大小 |
TData | TSize | 存储的数据 |
2.5.8、-X.509证书ID和单个文件的签名(-X.509 Certificate ID and Signature for individual file)(0x0015)
此字段包含有关使用PKCS#7存储
中的哪个证书对特定文件
进行签名的信息。它还包含签名数据
。该字段可以出现多次
,但每个证书
只能出现一次。
注意:
所有字段以Intel低字节/高字节
顺序(小端字节序
)存储。
Value | Size(byte) | Description |
---|---|---|
0x0015 | 2 | 此“扩展”块类型的标签 |
TSize | 2 | 后续数据的大小 |
TData | TSize | 签名数据 |
2.5.9、-X.509证书ID和中心目录签名(-X.509 Certificate ID and Signature for central directory)(0x0016)
此字段包含有关使用PKCS#7存储
中的哪个证书来签名中心目录结构
的信息。当为ZIP文件启用中心目录加密功能
时,该记录将显示在“压缩文档扩展数据记录
(Archive extra data record)”中,否则将出现在第一个中心目录记录
中。
注意:
所有字段以Intel低字节/高字节
顺序(小端字节序
)存储。
Value | Size(byte) | Description |
---|---|---|
0x0016 | 2 | 此“扩展”块类型的标签 |
TSize | 2 | 后续数据的大小 |
TData | TSize | 数据 |
2.5.10、-强加密头(-Strong Encryption Header)(0x0017)
Value | Size(byte) | Description |
---|---|---|
0x0017 | 2 | 此“扩展”块类型的标签 |
TSize | 2 | 后续数据的大小 |
Format | 2 | 该记录的格式定义 |
AlgID | 2 | 加密算法标识符 |
Bitlen | 2 | 加密密钥的位长 |
Flags | 2 | 处理标志 |
CertData | TSize-8 | 证书解密扩展字段数据(请参阅“强加密规范”下描述证书处理方法的部分中对CertData的解释) |
有关详细信息,请参见描述强加密规范
的部分。
2.5.11、-记录管理控制(-Record Management Controls)(0x0018)
Value | Size(byte) | Description |
---|---|---|
0x0018 | 2 | 此“扩展”块类型的标签 |
CSize | 2 | 总扩展数据块的大小 |
Tag1 | 2 | 记录控制属性1 |
Size1 | 2 | 属性1的大小,以字节为单位 |
Data1 | Size1 | 属性1数据 |
… | … | … |
TagN | 2 | 记录控制属性N |
SizeN | 2 | 属性N的大小,以字节为单位 |
DataN | SizeN | 属性N数据 |
2.5.12、-PKCS#7加密接受者证书列表(-PKCS#7 Encryption Recipient Certificate List)(0x0019)
该字段可以包含有关加密处理
中使用的每个证书的信息,并且可以用来识别允许谁解密加密文件
。 该字段仅应出现在“压缩文档扩展数据记录
(Archive extra data record)”中。 该字段不是必填字段
,仅用于通过保留公共加密密钥数据
来帮助压缩文档修改
。 个别安全要求可能会要求省略
此数据以阻止信息泄露
。
注意:
所有字段以Intel低字节/高字节
顺序(小端字节序
)存储。
Value | Size(byte) | Description |
---|---|---|
0x0019 | 2 | 此“扩展”块类型的标签 |
TSize | 2 | 存储的数据的大小 |
TData | TSize | 存储的数据 |
TData:
Value | Size(byte) | Description |
---|---|---|
Version | 2 | 格式版本号-此时必须为0x0001 |
CStore | (var) | PKCS#7数据Blob |
有关详细信息,请参见描述强加密规范
的部分。
2.5.13、-MVS扩展字段(-MVS Extra Field)(0x0065)
以下是MVS扩展字段
的布局。注意:
某些字段以大端格式
存储。
Value | Size(byte) | Description |
---|---|---|
0x0065 | 2 | 此“扩展”块类型的标签 |
TSize | 2 | 以下数据块的大小 |
ID | 4 | EBCDIC“Z390” 0xE9F3F9F0或“T4MV”用于TargetFour |
(var) | TSize-4 | 属性数据(请参阅附录B) |
2.5.14、-OS/400扩展字段(-OS/400 Extra Field)(0x0065)
以下是OS/400扩展字段
的布局。注意:
某些字段以大端格式
存储。
除非另有说明,否则所有文本均为EBCDIC
格式。
Value | Size(byte) | Description |
---|---|---|
0x0065 | 2 | 此“扩展”块类型的标签 |
TSize | 2 | 以下数据块的大小 |
ID | 4 | EBCDIC“I400” 0xC9F4F0F0或“T4MV”用于TargetFour |
(var) | TSize-4 | 属性数据(请参阅附录A) |
2.5.15、-策略解密密钥记录扩展字段(-Policy Decryption Key Record Extra Field)(0x0021)
以下是策略解密密钥扩展块
的布局。TData
是可变长度,可变内容字段。它包含有关加密
和/或加密密钥源
的信息。有关当前TData结构
的信息,请与PKWARE联系。此扩展块
中的信息也可以放在注释字段
中。
Value | Size(byte) | Description |
---|---|---|
0x0021 | 2 | 此“扩展”块类型的标签 |
TSize | 2 | 以下数据块的大小 |
TData | TSize | 密钥的数据 |
2.5.16、-密钥提供者记录扩展字段(-Key Provider Record Extra Field)(0x0022)
以下是密钥提供者扩展块
的布局。TData
是可变长度,可变内容字段。 它包含有关加密
和/或加密密钥源
的信息。有关当前TData
结构的信息,请与PKWARE联系。此扩展块
中的信息也可以放在注释字段
中。
Value | Size(byte) | Description |
---|---|---|
0x0022 | 2 | 此“扩展”块类型的标签 |
TSize | 2 | 以下数据块的大小 |
TData | TSize | 密钥的数据 |
2.5.17、-策略密钥数据记录记录扩展字段(-Policy Key Data Record Record Extra Field)(0x0023)
以下是策略密钥数据扩展块
的布局。TData
是可变长度,可变内容字段。它包含有关加密
和/或加密密钥源
的信息。有关当前TData
结构的信息,请与PKWARE联系。此扩展块中的信息也可以放在注释字段
中。
Value | Size(byte) | Description |
---|---|---|
0x0023 | 2 | 此“扩展”块类型的标签 |
TSize | 2 | 以下数据块的大小 |
TData | TSize | 密钥的数据 |