pyzipper
AES encryption for zipfile.
Decision gist · record as of 2026-08-14
Yes. pyzipper is actively maintained, has no known vulnerabilities, installs with minimal friction, and solves a real gap in Python's standard library—AES encryption for zip files. The MIT license is permissive. Use it when you need encrypted zip support; the API is familiar to anyone who has used zipfile, and the single dependency is lightweight.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Low install friction; pure Python wheel with a single runtime dependency on pycryptodomex.
- Actively maintained with a release 92 days ago and ongoing commits.
License · maintenance · safety
MIT (permissive) — MIT license permits commercial and private use with minimal restrictions; suitable for most projects.
last release 2026-05-14 (92 days) · last repo commit 2026-05-14 · 145 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 9,323,147 downloads/mo, #1,544 on PyPI
Alternatives
Verify before relying
pip install pyzipper
import pyzipper
secret_password = b'lost art of keeping a secret'
with pyzipper.AESZipFile('new_test.zip', 'w', compression=pyzipper.ZIP_LZMA, encryption=pyzipper.WZ_AES) as zf:
zf.setpassword(secret_password)
zf.writestr('test.txt', 'secret content')
with pyzipper.AESZipFile('new_test.zip') as zf:
zf.setpassword(secret_password)
content = zf.read('test.txt')- Whether the API surface differs meaningfully from Python 3.7's zipfile beyond the documented lack of pathlib wrappers
- Performance characteristics compared to standard zipfile for non-encrypted archives
- Compatibility of encrypted archives with other AES zip implementations beyond WinZip
What it is and what it does
pyzipper is a drop-in replacement for Python's zipfile module that adds support for reading and writing AES-encrypted zip archives using the WinZip AES encryption specification. It maintains the same API as Python 3.7's zipfile, so existing code using standard zipfile can often switch to pyzipper with minimal changes to add encryption support.
The package depends on pycryptodomex for cryptographic operations and supports AES encryption at 128, 192, or 256 bits (256 bits by default). It handles password-based encryption, CRC32 validation for data integrity, and follows WinZip's AES FAQ recommendations—notably, it excludes CRC32 values from encrypted file headers by default to avoid leaking information about small files, though this can be conditionally enabled for files above a configurable byte threshold.
Use it for
- Encrypt sensitive files in zip archives for secure distribution or storage with password protection
- Read WinZip-encrypted zip files programmatically without external tools or manual decryption
- Build backup or archival systems that require both compression and AES encryption in a single step
- Migrate from manual encryption workflows to a standard Python API for handling encrypted archives
- Create password-protected zip files for compliance or data protection requirements
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
pyzipper is actively maintained, has no known vulnerabilities, installs with minimal friction, and solves a real gap in Python's standard library—AES encryption for zip files. The MIT license is permissive. Use it when you need encrypted zip support; the API is familiar to anyone who has used zipfile, and the single dependency is lightweight.
Install
pyzipper on PyPI
Before you install
Low install friction; pure Python wheel with a single runtime dependency on pycryptodomex. Actively maintained with a release 92 days ago and ongoing commits.
License in practice
MIT license permits commercial and private use with minimal restrictions; suitable for most projects.
Quickstart
pip install pyzipper
import pyzipper
secret_password = b'lost art of keeping a secret'
with pyzipper.AESZipFile('new_test.zip', 'w', compression=pyzipper.ZIP_LZMA, encryption=pyzipper.WZ_AES) as zf:
zf.setpassword(secret_password)
zf.writestr('test.txt', 'secret content')
with pyzipper.AESZipFile('new_test.zip') as zf:
zf.setpassword(secret_password)
content = zf.read('test.txt')
Verify before relying
- Whether the API surface differs meaningfully from Python 3.7's zipfile beyond the documented lack of pathlib wrappers
- Performance characteristics compared to standard zipfile for non-encrypted archives
- Compatibility of encrypted archives with other AES zip implementations beyond WinZip
Package facts
| License | MIT permissive |
| Python support | Supports the current Python release >=3.4 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 1 packagepycryptodomex |
| Maintenance | Actively maintained 92 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 9,323,147 / month, #1,544 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 4 - BetaIntended Audience :: DevelopersOperating System :: MacOS :: MacOS XOperating System :: Microsoft :: WindowsOperating System :: OS IndependentOperating System :: POSIXOperating System :: POSIX :: LinuxProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: 3.4Programming Language :: Python :: 3.5Programming Language :: Python :: 3.6Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Topic :: System :: Archiving :: Compression |
Evidence: pyzipper-0.4.0-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “AES encrypted zip files”
- pyzipperpyzipper replaces Python's standard zipfile module to read and write…
- stream-unzipStreams unzip operations on ZIP archives without loading entire files…
- pyminizipCreates password-encrypted ZIP files that can be extracted on…
Give your agent the search over MCP, or paste the wish link into any chat.
More Compression packages
Provides Python bindings to the Brotli compression library, enabling lossless compression and decompression using a modern LZ77 variant with Huffman coding and context modeling.
Install it if you need Brotli compression in Python; the API is straightforward and the library is battle-tested.
Provides Zstandard compression support for Python versions before 3.14, backporting the standard library's zstd module along with zstd-enabled tarfile and zipfile modules.
Zopfli is a Python binding for Google's Zopfli compression library, providing higher-density compression for zlib and gzip formats than standard algorithms, with tunable iteration and block-splitting parameters.
Python binding for Google's Snappy compression library, providing fast compression and decompression of data via the cramjam backend.
However, dormant maintenance (715 days since last release) means security or compatibility issues may not be addressed quickly.
Provides Python bindings to the Zstandard (zstd) compression library with an API similar to bz2, lzma, and zlib modules.
Compresses and decompresses Rich Text Format (RTF) data using the LZFu compression algorithm, implementing the Microsoft RTF Compression format.
However, maintenance is aging with no recent updates; verify that it meets your RTF variant requirements before relying on it for new projects.
See also pyAesCrypt · pyminizip · stream-unzip · zipfile-deflate64 · ansible-vault · zipfile-zstd · android_backup · zipfile36 · stream-zip · zipp