Free online app for opening and creating ZIP files
Version 1.0.1 FINAL - 2026-11-04
ZIP Extractor Encryption (ZEE) Specification (PDF, Version 1.0.1 FINAL)
Officially assigned by PKWARE. PKWARE, which maintains the ZIP file format specification, assigned ZIP compression method 91 and extra-field Header ID 0x9101 to ZIP Extractor Encryption.
ZIP Extractor Encryption (ZEE) uses ZIP compression method 91 for a family of password-based encryption suites, specified and maintained by Visware LLC. Its first suite, ZEE-1, is defined by one specification, authored by Visware LLC Technical Staff. Its main themes:
File sizes and the archive comment remain public in both modes. The overview below introduces the format. The companion Implementer's Guide provides byte layouts, an ordered reading procedure and a worked archive; the full specification remains the normative reference. Both documents are Version 1.0.1 FINAL and describe the same ZEE-1 wire format as the 1.0.1 drafts. ZIP Extractor supports creating ZEE archives through its Enhanced Encryption option, available in production since October 31, 2026.
One 0x9101 field appears in each ZEE regular file's local header and central record, with byte-identical contents. Integers are little-endian (APPNOTE 4.3.3).
| Offset | Size | Field | Value |
|---|---|---|---|
| 0 | 2 | Header ID | 0x9101 (01 91) |
| 2 | 2 | Data Size | 8 (08 00) |
| 4 | 2 | Signature | ASCII ZE (5a 45), per APPNOTE 4.6.3 |
| 6 | 2 | SuiteID | 1 for ZEE-1 |
| 8 | 2 | ActualMethod | 0, 8, 9, 12, 14 or 93 for new content |
| 10 | 2 | ActualFlags | Bits 1-2 as defined for the method; otherwise zero |
Canonical DEFLATE example: 01 91 08 00 5a 45 01 00 08 00 00 00. Parsing checks bounds, signature, SuiteID, then exact size for the recognized suite. An unknown suite is unsupported; a missing, duplicate or malformed field is malformed. The complete 12 bytes are authenticated by the file tag.
| SuiteID | Suite | Status |
|---|---|---|
| 0 | none | unsupported; not a valid suite |
| 1 | ZEE-1 | defined by this specification |
| 2-65535 | unassigned | reserved for future ZEE suites |
A SuiteID selects one complete layout, key schedule, cipher, authentication and permitted-method contract. Published incompatible changes require a new SuiteID. ZIP Extractor maintains the suite registry.
"ZEE-1/aes" || nonce, "ZEE-1/mac" || nonce and "ZEE-1/verify" || nonce to produce 32, 32 and 2 bytes. Directory labels are ZEE-1/dir/aes, ZEE-1/dir/mac and ZEE-1/dir/verify instead. The PBKDF2 root is used directly as the expansion key; there is no HKDF-Extract. Labels are exact ASCII followed by the raw nonce bytes, with no separator or terminator."ZEE-1/tag" || modeByte || descriptor12 || ciphertext. Mode 00 means public directory; 01 means ZECD. No mode field is stored. An unchanged protected payload cannot validate as a public-mode file after ZECD is stripped.rootSalt16 | nonce16 | verifier2 | AES-CTR(compressedStream[S] || CRC32LE[4]) | tag16. One continuous counter stream encrypts the compressed bytes and CRC. Ciphertext length is C = S + 4, payload length is P = S + 54, and the tag covers all ciphertext. The ciphertext bound is C <= 2^61 - 87. Readers separate the last four decrypted bytes before giving only S bytes to the codec. The two-byte verifier is an early-rejection hint, never authentication.66 + C. Its MAC input is "ZEE-1/dir/tag" || header16 || ciphertext, with C <= 2^61 - 94. There is no mode byte in the directory MAC and no comment input. Directory plaintext is the uncompressed central-directory records alone. Verify the directory MAC before decrypting or parsing it. Each protected file record supplies an expected tag through ZEAC; compare it before file- key work, then verify the actual file MAC before accepting file contents.(CRC=0, P, U); protected values are all zero. ZIP64 size reservation determines width, not an offset-only ZIP64 field. Reserved size forms persist even if the final sizes fit.Each Header ID 0x455A field contains one four-byte ASCII tag and its body. Multiple fields with different tags may coexist in the same ZIP record. ZEXT is an optional producer marker; ZEAC contains a 16-byte expected file tag and appears exactly once in each protected regular-file central record. ZECD itself is an archive-level record, not an extra field.
The archive comment is public and unauthenticated in both modes. When shown, it is identified as unverified, including after unlock. Its bytes do not affect file or directory authentication; ordinary ZIP framing bounds still apply. There is no archive-comment authentication record. Public writers omit ZEAC and public readers ignore any copies as unknown extras, without attributing authentication to them.
ZIP Extractor Encryption (ZEE) Implementer's Guide (PDF, Version 1.0.1 FINAL)
ZIP Extractor Encryption (ZEE) Specification (PDF, Version 1.0.1 FINAL)