summaryrefslogtreecommitdiffstats
path: root/other-licenses/7zstub/src/DOC/Methods.txt
blob: 11adcb0ba3c9e9641a076e20a777a808899ad1be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
7-Zip method IDs for 7z and xz archives
---------------------------------------

Version: 17.01
Date: 2017-05-27

Each compression or crypto method in 7z is associated with unique binary value (ID).
The length of ID in bytes is arbitrary but it can not exceed 63 bits (8 bytes).

xz and 7z formats use same ID map.

If you want to add some new ID, you have two ways:
  1) Write request for allocating IDs to 7-Zip developers.
  2) Generate 8-bytes ID:

    3F ZZ ZZ ZZ ZZ ZZ MM MM 

    3F              - Prefix for random IDs (1 byte)
    ZZ ZZ ZZ ZZ ZZ  - Developer ID (5 bytes). Use real random bytes. 
                      
    MM MM           - Method ID (2 bytes)

    You can notify 7-Zip developers about your Developer ID / Method ID.

    Note: Use new ID, if old codec can not decode data encoded with new version.


List of defined IDs
-------------------
      
00 - Copy

03 - Delta
04 - BCJ (x86)
05 - PPC (big-endian)
06 - IA64
07 - ARM (little-endian)
08 - ARMT (little-endian)
09 - SPARC

21 - LZMA2
          
02.. - Common
   03 [Swap]
      - 2 Swap2
      - 4 Swap4

03.. - 7z
   01 - 
      01 - LZMA
  
   03 - [Branch Codecs]
      01 - [x86 Codecs]
         03  - BCJ
         1B  - BCJ2 (4 packed streams)
      02 - 
         05 - PPC (big-endian)
      03 - 
         01 - Alpha
      04 - 
         01 - IA64
      05 - 
         01 - ARM (little-endian)
      06 - 
         05 - M68 (big-endian)
      07 - 
         01 - ARMT (little-endian)
      08 - 
         05 - SPARC

   04 - 
      01 - PPMD

   7F -
      01 - experimental method.


04.. - Misc codecs

   00 - Reserved

   01 - [Zip]
      00 - Copy (not used. Use {00} instead)
      01 - Shrink
      06 - Implode
      08 - Deflate
      09 - Deflate64
      0A - Imploding
      0C - BZip2 (not used. Use {040202} instead)
      0E - LZMA (LZMA-zip)
      5F - xz
      60 - Jpeg
      61 - WavPack
      62 - PPMd (PPMd-zip)
      63 - wzAES

   02 - 
      02 - BZip2

   03 - [Rar]
      01 - Rar1
      02 - Rar2
      03 - Rar3
      05 - Rar5

   04 - [Arj]
      01 - Arj(1,2,3)
      02 - Arj4

   05 - [Z]

   06 - [Lzh]

   07 - Reserved for 7z

   08 - [Cab]

   09 - [NSIS]
      01 - DeflateNSIS
      02 - BZip2NSIS

   F7 - External codecs (that are not included to 7-Zip)

      0x xx - reserved

      10 xx - reserved (LZHAM)
         01 - LZHAM

      11 xx - reserved (Tino Reichardt)
         01 - ZSTD
         02 - BROTLI
         04 - LZ4
         05 - LZ5
         06 - LIZARD
 

06.. - Crypto 

   F0 - Ciphers without hashing algo

      01 - [AES]
         0x - AES-128
         4x - AES-192
         8x - AES-256
         Cx - AES

         x0 - ECB
         x1 - CBC
         x2 - CFB
         x3 - OFB
         x4 - CTR

   F1 - Combine Ciphers

      01 - [Zip]
         01 - ZipCrypto (Main Zip crypto algo)

      03 - [RAR]
         02 - 
         03 - Rar29AES (AES-128 + modified SHA-1)

      07 - [7z]
         01 - 7zAES (AES-256 + SHA-256)


---
End of document