File: APPNOTE.TXT - .ZIP File Format Specification
Version: 6.3.2
Revised: September 28, 2007
Copyrigh
t (c) 1989 - 2007 PKWARE Inc., All Rights Reserved.
The use of certain technological aspects disclosed in the current
APPNOTE is available pursuant to the below section entitled
"Incorporating PKWARE Proprietary Technology into Your Product".
I. Purpose
----------
This specification is intended to define a cross-platform,
interoperable file storage and transfer format. Since its
first publication in 1989, PKWARE has remained committed to
ensuring the interoperability of the .ZIP file format through
publication and maintenance of this specification. We trust that
all .ZIP compatible vendors and application developers that have
adopted and benefited from this format will share and support
this commitment to interoperability.
II. Co
ntacting PKWARE
---------------------
PKWARE, Inc.
648 N. Plankinton Avenue, Suite 220
Milwaukee, WI 53203
+1-414-289-9788
+1-414-289-9789 FAX
zipformat@pkware.com
III. Disclaimer
---------------
Although PKWARE will attempt to supply current and accurate
information relating to its file formats, algorithms, and the
subject programs, the possibility of error or omission cannot
be eliminated. PKWARE therefore expressly disclaims any warranty
that the information co
ntained in the associated materials relating
to the subject programs and/or the format of the files created or
accessed by the subject programs and/or the algorithms used by
the subject programs, or any other matter, is current, correct or
accurate as delivered. Any risk of damage due to any possible
inaccurate information is assumed by the user of the information.
Furthermore, the information relating to the subject programs
and/or the file formats created or accessed by the subject
programs and/or the algorithms used by the subject programs is
subject to change without notice.
If the version of this file is marked as a NOTIFICATION OF CHANGE,
the co
ntent defines an Early Feature Specification (EFS) change
to the .ZIP file format that may be subject to modification prior
to publication of the Final Feature Specification (FFS). This
d
ocument may also co
ntain information on Planned Feature
Specifications (PFS) defining recognized future extensions.
IV. Change Log
--------------
Version Change Des
cription Date
------- ------------------ ----------
5.2 -Single Password Symmetric Encryption 06/02/2003
storage
6.1.0 -Smartcard compatibility 01/20/2004
-D
ocumentation on certificate storage
6.2.0 -Introduction of Central Directory 04/26/2004
Encryption for encrypting m
etadata
-Added OS/X to Version Made By values
6.2.1 -Added Extra Field placeholder for 04/01/2005
POSZIP using ID 0
x4690
-Clarified size field on
"zip64 end of central directory record"
6.2.2 -D
ocumented Final Feature Specification 01/06/2006
for Strong Encryption
-Clarifications and typographical
corrections
6.3.0 -Added tape positio
ning storage 09/29/2006
parameters
-Expanded list of supported hash algorithms
-Expanded list of supported compression
algorithms
-Expanded list of supported encryption
algorithms
-Added option for Unicode filename
storage
-Clarifications for co
nsistent use
of Data Des
criptor records
-Added additio
nal "Extra Field"
definitions
6.3.1 -Corrected standard hash values for 04/11/2007
SHA-256/384/512
6.3.2 -Added compression method 97 09/28/2007
-D
ocumented InfoZIP "Extra Field"
values for UTF-8 file name and
file comment storage
V. General Format of a .ZIP file
--------------------------------
Files stored in arbitrary order. Large .ZIP files can span multiple
volumes or be split into user-defined segment sizes. All values
are stored in little-endian byte order unless otherwise specified.
Overall .ZIP file format:
[local file header 1]
[file data 1]
[data des
criptor 1]
.
.
.
[local file header n]
[file data n]
[data des
criptor n]
[archive decryption header]
[archive extra data record]
[central directory]
[zip64 end of central directory record]
[zip64 end of central directory locator]
[end of central directory record]
A. Local file header:
local file header signature 4 bytes (0
x04034b50)
version needed to extract 2 bytes
general purpose bit flag 2 bytes
compression method 2 bytes
last mod file time 2 bytes
last mod file date 2 bytes
crc-32 4 bytes
compressed size 4 bytes
uncompressed size 4 bytes
file name length 2 bytes
extra field length 2 bytes
file name (variable size)
extra field (variable size)
B. File data
Immediately following the local header for a file
is the compressed or stored data for the file.
The series of [local file header][file data][data
des
criptor] repeats for each file in the .ZIP archive.
C. Data des
criptor:
crc-32 4 bytes
compressed size 4 bytes
uncompressed size 4 bytes
This des
criptor exists o
nly if bit 3 of the general
purpose bit flag is set (see below). It is byte aligned
and immediately follows the last byte of compressed data.
This des
criptor is used o
nly when it was not possible to
seek in the output .ZIP file, e.g., when the output .ZIP file
was standard output or a non-seekable device. For ZIP64(tm) format
archives, the compressed and uncompressed sizes are 8 bytes each.
When compressing files, compressed and uncompressed sizes
should be stored in ZIP64 format (as 8 byte values) when a
files size exceeds 0
xFFFFFFFF. However ZIP64 format may be
used regardless of the size of a file. When extracting, if
the zip64 extended information extra field is present for
the file the compressed and uncompressed sizes will be 8
byte values.
Although not originally assigned a signature, the value
0
x08074b50 has commo
nly been adopted as a signature value
for the data des
criptor record. Implementers should be
aware that ZIP files may be encountered with or without this
signature marking data des
criptors and should account for
either case when reading ZIP files to ensure compatibility.
When writing ZIP files, it is recommended to include the
signature value marking the data des
criptor record. When
the signature is used, the fields currently defined for
the data des
criptor record will immediately follow the
signature.
An extensible data des
criptor will be released in a future
version of this APPNOTE. This new record is intended to
resolve co
nflicts with the use of this record going forward,
and to provide better support for streamed file processing.
When the Central Directory Encryption method is used, the data
des
criptor record is not required, but may be used. If present,
and bit 3 of the general purpose bit field is set to indicate
its presence, the values in fields of the data des
criptor
record should be set to binary zeros.
D. Archive decryption header: