### 压缩软件与7-Zip方法ID详解 #### 一、概述 在压缩软件领域,7-Zip是一款非常著名的开源压缩工具,它不仅支持常见的压缩格式如ZIP、RAR等,还支持自有的7z格式,具有较高的压缩率及解压速度。本文将详细介绍7-Zip中的压缩算法及加密方法的二进制标识(即Method IDs),这些标识用于区分不同的压缩或加密方式,并且是7-Zip内部识别和处理不同数据流的基础。 #### 二、Method ID概念 Method ID是7-Zip内部为每种压缩或加密方法分配的一个唯一二进制值,长度不超过63位(8字节)。如果开发者想要添加新的Method ID,可以通过以下两种方式实现: 1. **向7-Zip开发者团队申请**:这是正式途径,开发者需联系7-Zip开发团队并提供详细信息。 2. **自行生成8字节ID**: - **3FZZZZZZZZZZMMMM3F**:作为随机ID的前缀(1字节)。 - **ZZZZZZZZZZ**:开发者ID(5字节)。建议使用真正的随机字节。 - **MMMM**:方法ID(2字节)。 注意:开发者无需通知7-Zip团队关于自定义的Developer ID/Method ID。新ID仅应在旧版本代码无法解码新版本编码的数据时使用。 #### 三、定义的Method IDs列表 下面列举了7-Zip中已定义的一些Method IDs: 1. **00-Copy**:复制模式,不进行压缩,直接拷贝原始数据。 2. **03-Delta**:差异编码,用于去除重复数据。 3. **04-x86(BCJ)**:针对x86架构的BCJ优化。 4. **05-PPC(BigEndian)**:针对PowerPC架构的Big Endian优化。 5. **06-IA64**:针对Itanium 64架构的优化。 6. **07-ARM(littleendian)**:针对ARM架构Little Endian优化。 7. **08-ARMThumb(littleendian)**:针对ARM Thumb指令集Little Endian优化。 8. **09-SPARC**:针对SPARC架构的优化。 9. **21-LZMA2**:LZMA2算法,一种高效的数据压缩算法。 10. **01-LZMA**:LZMA算法,早期版本的LZMA压缩算法。 11. **01-Zip**:Zip压缩格式。 12. **08-Deflate**:Deflate压缩算法,广泛应用于ZIP、GZIP等格式。 13. **09-Deflate64**:扩展版的Deflate算法。 14. **14-LZMA**:LZMA压缩算法。 15. **60-Jpeg**:JPEG图像压缩算法。 16. **62-PPMd**:PPM压缩算法。 17. **63-wzAES**:WizAES加密算法。 18. **02-BZip2**:BZip2压缩算法。 19. **03-Rar**:RAR压缩格式。 20. **01-Arj(1,2,3)**:Arj压缩格式的不同版本。 21. **05-Z**:Z压缩格式。 22. **06-Lzh**:LZH压缩格式。 23. **08-Cab**:CAB压缩格式。 24. **09-NSIS**:NSIS脚本压缩格式。 25. **01-DeflateNSIS**:NSIS中的Deflate压缩算法。 26. **02-BZip2NSIS**:NSIS中的BZip2压缩算法。 #### 四、加密Method IDs 除了压缩算法外,7-Zip还支持多种加密方式: 1. **01-AES**:AES加密算法。 2. **0x-AES-128**、**4x-AES-192**、**8x-AES-256**:分别表示AES-128、AES-192、AES-256加密强度。 3. **Cx-AESx0-ECB**、**x1-CBC**、**x2-CFB**、**x3-OFB**:AES的不同加密模式,包括ECB、CBC、CFB、OFB等。 #### 五、哈希Method IDs 7-Zip还支持多种哈希算法来确保文件完整性: 1. **01-CRC**:CRC校验码。 2. **02-SHA-1**:SHA-1哈希算法。 3. **03-SHA-256**、**04-SHA-384**、**05-SHA-512**:SHA-2系列哈希算法的不同版本。 通过以上介绍,我们可以了解到7-Zip不仅支持丰富的压缩算法,还提供了多样化的加密和哈希功能,使得用户可以根据实际需求选择最合适的压缩方案。这对于提高文件安全性、减少存储空间等方面都具有重要意义。
-----------------------
Each compression or crypto method in 7z has unique binary value (ID).
The length of ID in bytes is arbitrary but it can not exceed 63 bits (8 bytes).
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 only if old codec can not decode data encoded with new version.
List of defined IDs
-------------------
00 - Copy
03 - Delta
04 - x86 (BCJ)
05 - PPC (Big Endian)
07 - ARM (little endian)
08 - ARM Thumb (little endian)
09 - SPARC
21 - LZMA2
02.. - Common
03 Swap
- 2 Swap2
- 4 Swap4
03.. - 7z
01 - LZMA
01 - Version
03 - Branch
01 - x86
03 - BCJ
1B - BCJ2
02 - PPC
05 - PPC (Big Endian)
03 - Alpha
01 - Alpha
04 - IA64
01 - IA64
05 - ARM
01 - ARM
06 - M68
05 - M68 (Big Endian)
07 - ARM Thumb
剩余5页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于C++和C混合模式的操作系统开发项目.zip
- (源码)基于Arduino的全球天气监控系统.zip
- OpenCVForUnity2.6.0.unitypackage
- (源码)基于SimPy和贝叶斯优化的流程仿真系统.zip
- (源码)基于Java Web的个人信息管理系统.zip
- (源码)基于C++和OTL4的PostgreSQL数据库连接系统.zip
- (源码)基于ESP32和AWS IoT Core的室内温湿度监测系统.zip
- (源码)基于Arduino的I2C协议交通灯模拟系统.zip
- coco.names 文件
- (源码)基于Spring Boot和Vue的房屋租赁管理系统.zip