# 7z Format

7z is a new archive format, providing a high compression ratio.

The main features of the 7z format:

- Open architecture
- High compression ratio
- Strong AES-256 encryption
- Ability to use any compression, conversion or encryption method
- Supports files with sizes up to 16000000000 GB
- Unicode file names
- Solid compression
- Archive headers compression

7z has an open architecture, so it can support any new compression methods.

The following methods currently are integrated into 7z:

Method | Description
--- | ---
LZMA | Improved and optimized version of LZ77 algorithm
LZMA2 | LZMA-based compression method. It provides better multithreading support than LZMA
PPMD | Dmitry Shkarin's PPMdH with small changes
BCJ | Converter for 32-bit x86 executables
BCJ2 | Converter for 32-bit x86 executables
BZip2 | Standard BWT algorithm
Deflate | Standard LZ77-based algorithm

LZMA is the default and general compression method of 7z format. The main features of the LZMA method:

- High compression ratio
- Variable dictionary size (up to 4 GB)
- Compression speed: about 1 MB/s on 2 GHz CPU
- Decompression speed: about 10-20 MB/s on 2 GHz CPU
- Small memory requirement for decompression (depends from dictionary size)
- Small code size for decompression: about 5 KB
- Supports multi-threading and P4's hyper-threading

The LZMA compression algorithm is very suitable for embedded applications. If you want to use LZMA code, you can ask for consultation, custom code programming, and required developer licenses at

www.7-zip.org/support.html

7-Zip also supports encryption with the AES-256 algorithm. This algorithm uses a cipher key with length of 256 bits. To create the key, 7-Zip uses a derivation function based on an SHA-256 hash algorithm. A key derivation function produces a derived key from a text password defined by the user. To increase the cost of an exhaustive search for passwords, 7-Zip uses a big number of iterations to produce the cipher key from the text password.

## Tips for selecting password length

Here is an estimate of the time required for an exhaustive password search attack, when the password is a random sequence of lowercase Latin letters.

We suppose that one user can check 10 passwords per second and an organization with a budget of about $1 billion can check 10 billion passwords per second. We also suppose that the processor in use doubles its performance every two years; so, each additional Latin letter of a long password adds about 9 years to an exhaustive key search attack.

The result is this estimate of the time to succeed in an attack:

Password Length | Single User Attack | Organization Attack
--- | --- | ---
1 | 2 s | 1 s
2 | 1 min | 1 s
3 | 30 min | 1 s
4 | 12 hours | 1 s
5 | 14 days | 1 s
6 | 1 year | 1 s
7 | 10 years | 1 s
8 | 19 years | 20 s
9 | 26 years | 9 min
10 | 37 years | 4 hours
11 | 46 years | 4 days
12 | 55 years | 4 months
13 | 64 years | 4 years
14 | 73 years | 13 years
15 | 82 years | 22 years
16 | 91 years | 31 years
17 | 100 years | 40 years