●作成されたバージョン[version made by (2 bytes)]
上位バイトはファイル属性情報の互換性を示している。もし外部ファイル属性がMS-DOS互換かつ、DOSバージョンのPKZIP 2.04gで読み込めるのであれば、この値は0になる。互換性がないのであれば、この数値によって互換性のあるシステムを識別する。ソフトウェアはこれによってテキストファイルの改行方法などの情報を決定することができる。
現時点の対応数値は以下の通りである:
0 - MS-DOSとOS/2(FAT / VFAT / FAT32) 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~255 - 未使用 |
下位バイトはファイルを変換する際に使ったZip定義バージョンを表す。値を10で割ったものがメジャーバージョン、10で割ったあまりがマイナーバージョンである(たとえばVer 6.1なら61になる)。
●展開に必要なバージョン[version needed to extract (2 bytes)]
ファイルを展開するために最低限必要なZip定義バージョンを示す。この値は、ファイルを展開するために、特定のフォーマットがZIPプログラムでサポートされているかの判断に用いられる。もし様々な機能がファイルに適用されているのであれば、最小値は、もっとも新しい機能を含むバージョンにあわせるべきである。
バージョンによる最低限行える操作は以下の通りである:
1.0 - 基準値 1.1 - ファイルはボリュームラベルを含む 2.0 - ファイルはフォルダ(ディレクトリ)を含む 2.0 - ファイルはDeflateアルゴリズムで圧縮されている 2.1 - ファイルはDeflate64アルゴリズムで圧縮されている 2.5 - ファイルはPKWARE DCL Implodeアルゴリズムで圧縮されている 2.7 - ファイルはパッチデータを含む 4.5 - ファイルは64bit拡張が含まれる 4.6 - ファイルはBZIP2アルゴリズムで圧縮されている* 5.0 - ファイルはDES暗号化されている 5.0 - ファイルは3DES暗号化されている 5.0 - ファイルはRC2暗号化されている 5.0 - ファイルはRC4暗号化されている 5.1 - ファイルはAES暗号化されている 5.1 - ファイルはRC2暗号化されている** 5.2 - ファイルはRC2-64暗号化されている** 6.1 - ファイルはnon-OAEP key wrapping暗号化されている*** 6.2 - 中央ディレクトリが暗号化されている 6.3 - ファイルはLZMAで圧縮されている 6.3 - ファイルはPPMd(+)で圧縮されている 6.3 - ファイルはBlowfishで暗号化されている 6.3 - ファイルはTwofishで暗号化されている * : PKZIP 7.2以前では46とすべきところを50と誤って指定していた ** : RC2に関しては「強力な暗号化」に補足情報がある *** : non-OAEP key wrappingは意図的に用意された。 PKZIP 6.1以前のバージョンによる後方互換性のためだけに、 OAEP key wrappingをサポートするべきである。 + : PPMDによるファイル圧縮は6.3と指定するべきである。しかし、 指定したからといって、すべてのZIPプログラムが解凍できるとは限らない。 |
●オプションビットフラグ[general purpose bit flag: (2 bytes)]
Bit 0:ファイルが暗号化されている
(Implodeアルゴリズム)
Bit 1:
有効:8Kのスライド辞書が用いられている
無効:4Kのスライド辞書が用いられている
Bit 2:
有効:スライド辞書の生成に3つのShannon-Fano treesが用いられている。
無効:スライド辞書の生成に2つのShannon-Fano treesが用いられている。
(Deflateアルゴリズム)
Bit 2 | Bit 1 | |
0 | 0 | 規定の圧縮率 |
0 | 1 | 最大限の圧縮 |
1 | 0 | 速度重視の圧縮 |
1 | 1 | 最高速での圧縮 |
(LZMAアルゴリズム)
Bit 1:ストリームの終端に、終端を示すEOSマークが使われている
※上記以外の圧縮アルゴリズムでは定義されていない。
Bit 3:ヘッダ内のCRC32、圧縮後・圧縮前のサイズは0になっており、正確な数値は圧縮データのあとに記載されている。(PKZIP 2.04gはタイプ8圧縮方法のために認識するが、将来のバージョンはいずれの圧縮方法でも認識するようになる)
Bit 4:タイプ8圧縮方法の拡張のため、予約されている。
Bit 5:修正が適用されて圧縮されたファイルである(PKZIP 2.7以降)。
Bit 6:強力な暗号化が行われている(このフラグを有効にするには、最低限のバージョンを50以上にすること。AES暗号化を用いるのなら、51以上)
Bit 7-10:未使用
Bit 11:UTF-8による文字列が使用されている(付録D参照)
Bit 12:予約済み。
Bit 13:中央ディレクトリの暗号化されるとき、ヘッダの有効値が隠蔽されたことを示す。詳細は「強力な暗号化」に記述している。
Bit 14,15:予約済み。
●圧縮方法[compression method: (2 bytes)]
0 - 未圧縮 1 - Shrunk 2 - 圧縮ファクタ1 3 - 圧縮ファクタ2 4 - 圧縮ファクタ3 5 - 圧縮ファクタ4 6 - Imploding 7 - Tokenizing compressionアルゴリズム 8 - Deflate 9 - Deflate64 10 - PKWARE Data Compression Library Imploding 11 - 予約済み 12 - BZIP2 13 - 予約済み 14 - LZMA(EFS) 15 - 予約済み 16 - 予約済み 17 - 予約済み 18 - IBM TERSE 19 - IBM LZ77(PFS) 97 - WavPack 98 - PPMd version I, Rev 1 |
●日付と時刻[date and time fields: (2 bytes each)]
標準的なMS-DOSフォーマットでエンコードされる。標準ストリームによる処理であれば圧縮が開始された日時を登録する。中央ディレクトリが暗号化されており、かつオプションフラグの13ビット目が有効なら、この値は0になる。
●CRC32値[CRC-32: (4 bytes)]
0xdebb20e3が「マジックナンバー」として定義されている。オプションフラグの3ビット目が有効なら、この値は0であり、別の場所に記載されることになる。中央ディレクトリが暗号化されており、かつオプションフラグの13ビット目が有効なら、この値は0になる。
●圧縮前/後のサイズ[compressed size: (4 bytes)/uncompressed size: (4 bytes)]
ファイルデータの前にある復号ヘッダが存在するときは、このサイズも含める。オプションフラグの3ビット目が有効なら、この値は0であり、別の場所に記載されることになる。64bitフォーマットで、この値が0xFFFFFFFFであれば、サイズはZip64拡張データから取得することになる。中央ディレクトリが暗号化されており、かつオプションフラグの13ビット目が有効なら、この値は0になる。
●ファイル名のサイズ[file name length: (2 bytes)]
●拡張データのサイズ[extra field length: (2 bytes)]
●コメントのサイズ[file comment length: (2 bytes)]
3つのデータの合計サイズは一般に65535バイトを超えるべきではない。標準入力の場合は、ファイル名サイズは0になる。
●ディスク番号開始[disk number start: (2 bytes)]
該当ファイルが始まるディスクの番号。Zip64で0xFFFFであれば、拡張データを参照することになる。
●内部ファイル属性[internal file attributes: (2 bytes)]
Bit 1,2は予約済み。
最下位ビットが有効なら、ファイルはテキスト形式で、無効ならバイナリ形式。
残りのビットはVer 1.0では未使用。
●外部ファイル属性[external file attributes: (4 bytes)]
データは作成されたホストに依存する。MS-DOSの場合は、下位バイトにディレクトリ属性のバイトがくる。標準入力であれば0である。
●ローカルヘッダの相対位置[relative offset of local header: (4 bytes)]
ファイルが現れる始めのディスクからの位置。Zip64で0xFFFFFFFFであれば、サイズはZip64拡張データから取得することになる。
●ファイル名[file name: (Variable)]
ファイルの相対パス名。ドライブ名や、「/」を前に置くべきではない。互換性のため、スラッシュは「¥」ではなく「/」を用いる。
●拡張データ[extra field: (Variable)]
Ver 1.0ではサイズは0である。拡張データはヘッダ、データの繰り返しとする。ヘッダIDは0~31までは予約済みであるが、それ以降は独自拡張のため自由に利用できる。
PKWAREによるヘッダID定義は以下の通り:
0x0001 Zip64 extended information extra field 0x0007 AV Info 0x0008 Reserved for extended language encoding data (PFS) (see APPENDIX D) 0x0009 OS/2 0x000a NTFS 0x000c OpenVMS 0x000d UNIX 0x000e Reserved for file stream and fork descriptors 0x000f Patch Descriptor 0x0014 PKCS#7 Store for X.509 Certificates 0x0015 X.509 Certificate ID and Signature for individual file 0x0016 X.509 Certificate ID for Central Directory 0x0017 Strong Encryption Header 0x0018 Record Management Controls 0x0019 PKCS#7 Encryption Recipient Certificate List 0x0065 IBM S/390 (Z390), AS/400 (I400) attributes - uncompressed 0x0066 Reserved for IBM S/390 (Z390), AS/400 (I400) attributes - compressed 0x4690 POSZIP 4690 (reserved) |
サードパーティーによる定義:
0x07c8 Macintosh 0x2605 ZipIt Macintosh 0x2705 ZipIt Macintosh 1.3.5+ 0x2805 ZipIt Macintosh 1.3.5+ 0x334d Info-ZIP Macintosh 0x4341 Acorn/SparkFS 0x4453 Windows NT security descriptor (binary ACL) 0x4704 VM/CMS 0x470f MVS 0x4b46 FWKCS MD5 (see below) 0x4c41 OS/2 access control list (text ACL) 0x4d49 Info-ZIP OpenVMS 0x4f4c Xceed original location extra field 0x5356 AOS/VS (ACL) 0x5455 extended timestamp 0x554e Xceed unicode extra field 0x5855 Info-ZIP UNIX (original, also OS/2, NT, etc) 0x6375 Info-ZIP Unicode Comment Extra Field 0x6542 BeOS/BeBox 0x7075 Info-ZIP Unicode Path Extra Field 0x756e ASi UNIX 0x7855 Info-ZIP UNIX (new) 0xa220 Microsoft Open Packaging Growth Hint 0xfd4a SMS/QDOS |
サイズはファイル名なども含めて64Kを超えるべきではない。独自のヘッダIDが競合するのを防ぐため、データ領域の始めに独自の署名を入れておくことを強く推奨する。
●ファイルコメント[file comment: (Variable)]
このファイルに対するコメント。
●ディスク番号[number of this disk: (2 bytes)]
中央ディレクトリ終端を含むディスクの数。Zip64かつ0xFFFFでれば、拡張データを参照する。
●中央ディレクトリ開始のディスク番号[number of the disk with the start of the central directory: (2 bytes)]
中央ディレクトリ開始のディスク番号。Zip64かつ0xFFFFでれば、拡張データを参照する。
●このディスクにおける中央ディレクトリエントリー総数 [total number of entries in the central dir on this disk: (2 bytes)]
ディスクにおける中央ディレクトリエントリー総数。Zip64かつ0xFFFFでれば、拡張データを参照する。
●中央ディレクトリエントリー数[total number of entries in the central dir: (2 bytes)]
zipファイル内の中央ディレクトリエントリー数。Zip64かつ0xFFFFでれば、拡張データを参照する。
●中央ディレクトリのサイズ[size of the central directory: (4 bytes)]
中央ディレクトリのサイズ(バイト)。Zip64かつ0xFFFFFFFFでれば、拡張データを参照する。
●開始ディスク番号に対する中央ディレクトリの開始位置[offset of start of central directory with respect to the starting disk number: (4 bytes)]
開始ディスク番号に対する中央ディレクトリの開始位置。Zip64かつ0xFFFFFFFFでれば、拡張データを参照する。
●ZIPファイルコメントサイズ[.ZIP file comment length: (2 bytes)]
対象ZIPファイルのコメントのサイズ。
●ZIPファイルコメント[.ZIP file comment: (Variable)]
対象ZIPファイルのコメント。現時点での暗号化はできないので、機密事項などを記載してはいけない。
●zip64拡張データ領域[zip64 extensible data sector (variable size)]
(PKWAREが使用するために予約済み)