ZIPX 是一种归档文件格式,它建立在广泛使用的 ZIP 格式的基础上并对其进行了扩展。它是由 PKWARE 开发的,该公司也是原始 ZIP 格式的幕后推手,作为一种在保持与现有 ZIP 工具兼容性的同时添加 高级压缩和加密功能的方法。与传统的 ZIP 归档文件相比,ZIPX 旨在提供更好的压缩率、更强的安全性以及对更大文件大小的支持。
ZIPX 的一个关键功能是对多种压缩方法的支持。除了 ZIP 文件中使用的标准 DEFLATE 压缩之外,ZIPX 还引入了几种新的压缩算法。其中包括 BZIP2,这是一种以其出色的压缩率而闻名的、高性能压缩方法,以及 PPMd,这是一种基于上下文的统计压缩算法,可以实现更好的压缩结果。ZIPX 还支持 LZMA 压缩方法,该方法基于 Lempel-Ziv-Markov 链算法,在压缩率和速度之间提供了良好的平衡。
ZIPX 的另一个重大增强是引入了高级加密功能。虽然 ZIP 文件长期以来一直支持使用相对较弱的 ZipCrypto 算法进行基本密码保护,但 ZIPX 通过结合强大的加密方法提升了安全级别。它支持使用 AES(高级加密标准),密钥长度为 128、192 或 256 位。AES 是一种被广泛接受且安全的加密算法,可以为归档文件的内容提供强大的保护,防止未经授权的访问。
ZIPX 还解决了原始 ZIP 格式在文件大小方面的限制。传统的 ZIP 文件使用 32 位字段来存储文件大小和偏移量,这将单个文件和整个归档文件的大小限制在 4 GB。当处理超过此限制的大文件或文件集合时,这将成为一个问题。ZIPX 通过引入 64 位扩展来克服此限制,允许文件大小和归档文件大小高达 18 艾字节(约 1800 万太字节)。这使得 ZIPX 适用于处理极大的数据集并适应不断增长的数字文件大小。
在文件格式结构方面,ZIPX 在引入新功能和扩展的同时保持了与基本 ZIP 格式的兼容性。ZIPX 文件由一系列文件记录组成,每个记录代表一个压缩文件或目录。文件记录后面跟着一个中央目录,其中包含有关归档文件的元数据,例如它们的名称、大小和压缩方法。ZIPX 引入了新的记 录类型和附加字段以适应其高级功能。
ZIPX 中的新记录类型之一是“附加字段”记录。此记录允许包含特定于 ZIPX 的附加元数据,例如所选的压缩方法、加密算法和任何其他相关信息。附加字段由唯一的头 ID 标识,并且可以由支持 ZIPX 的软件轻松解析。
ZIPX 还引入了一个新的“拆分归档”功能,该功能可以将大型归档文件拆分为更小、更易于管理的部分。当通过网络或存储介质(大小有限)传输大型 ZIPX 文件时,这尤其有用。拆分归档功能允许创建多个 ZIPX 文件,这些文件可以连接在一起以重建原始归档文件。每个拆分文件都包含一个特殊头,指示其在序列中的位置和总部分数。
在归档格式方面,兼容性是一个重要的考虑因素。虽然 ZIPX 提供了比传统 ZIP 格式更高级的功能和改进,但它在一定程度上保持了向后兼容性。ZIPX 文件仍然可以通过许多现有的 ZIP 工具打开和提取,尽管它们可能不支持所有高级功能。但是,要充分利用 ZIPX 的功能,例如改进的压缩和强加密,则需要专门支持 ZIPX 的软件。
PKWARE 提供了一组工具和库,称为“PKZIP SDK”,以方便创建和操作 ZIPX 文件。该 SDK 包括用于压缩和提取 ZIPX 归档文件的命令行实用程序,以及用于将 ZIPX 支持集成到自定义应用程序中的 API 和库。这些工具支持各种编程语言和平台,使开发人员更容易在他们的软件项目中使用 ZIPX。
ZIPX 的引入为处理大量数据的用户和组织带来了诸多好处。ZIPX 中改进的压缩方法可以减小文件大小,从而减少存储需求并加快通过网络的数据传输。强大的加密功能确保了存储在 ZIPX 归档文件中的敏感信息的机密性和完整性。此外,处理大文件大小的能力消除了繁琐的解决方法的需要,并允许高效归档和分发海量数据集。
尽管有 这些优势,但与无处不在的 ZIP 格式相比,ZIPX 的采用相对较慢。这可以归因于对 ZIP 的广泛支持和熟悉,以及许多用户可能不需要 ZIPX 提供的高级功能这一事实。然而,随着数据量的持续增长和安全变得越来越关键,对像 ZIPX 这样的功能更强大的归档格式的需求可能会增加。
总之,ZIPX 是一种功能强大且功能丰富的归档文件格式,它建立在 ZIP 格式的传统之上。凭借对高级压缩方法、强加密和大文件大小的支持,ZIPX 对传统的 ZIP 归档文件进行了重大改进。虽然在一定程度上保持了与现有 ZIP 工具的兼容性,但 ZIPX 的全部潜力是通过使用专门的软件和库来释放的。随着数据存储和传输需求的不断发展,ZIPX 代表了在从个人计算到企业数据管理的各个领域进行高效和安全归档的宝贵工具。
文件压缩通过减少冗余,让相同的信息占用更少的比特。可压缩的上限受信息论约束:对于无损压缩,上界是信源熵(参见香农的信源编码定理及其 1948 年的原始论文《通信的数学理论》)。对于有损压缩,码率与感知质量之间的权衡由率失真理论描述。
大多数压缩器分两步。首先,模型预测或揭示数据中的结构。然后,编码器把这些预测变成近乎最优的比特模式。一个经典的建模家族是 Lempel–Ziv:LZ77 (1977)和 LZ78 (1978) 会检测重复子串并输出引用而不是原始字节。在编码端,霍夫曼编码(见原始论文1952)会为更常见的符号分配更短的代码。算术编码和范围编码能更贴近熵极限,而现代的非对称数值系统(ANS)用查表实现获得相似的压缩率。
DEFLATE(被 gzip、zlib 与 ZIP 采用)结合了 LZ77 和霍夫曼编码。其规范完全公开:DEFLATERFC 1951、zlib 封装RFC 1950以及 gzip 文件格式RFC 1952。Gzip 面向流式传输并明确不提供随机访问。PNG 图像标准化将 DEFLATE 作为唯一的压缩方法(窗口最多 32 KiB),可见 PNG 规范“Compression method 0… deflate/inflate… at most 32768 bytes”和W3C/ISO PNG 第二版。
Zstandard (zstd): 面向高压缩率与快速解压的通用压缩器。格式记录在RFC 8878(还有HTML 镜像)以及 GitHub 上的参考规范文档。与 gzip 类似,基本帧不追求随机访问。zstd 的拿手好戏是字典:从语料中抽取的小样本能显著改善大量小文件或相似文件的压缩(参见python-zstandard 字典文档与Nigel Tao 的示例)。各实现同时支持“无结构”和“有结构”字典(讨论)。
Brotli: 为网页内容(例如 WOFF2 字体、HTTP)优化,混合静态字典与类似 DEFLATE 的 LZ+熵编码核心。规范见RFC 7932,其中也指出滑动窗口大小为 2WBITS-16,WBITS 取值 [10, 24](1 KiB-16 B 到 16 MiB-16 B),并且不尝试随机访问。Brotli 常在网页文本上优于 gzip,同时保持快速解码。
ZIP 容器: ZIP 是一种文件归档格式,可存储使用多种压缩算 法(deflate、store、zstd 等)的条目。事实标准是 PKWARE 的 APPNOTE(参见APPNOTE 门户、托管副本以及美国国会图书馆的概览ZIP File Format (PKWARE)/ZIP 6.3.3)。
文件压缩是一种减小文件或文件集大小的过程,通常用于节省存储空间或加速网络传输。
文件压缩通过识别和删除数据中的冗余来工作。它使用算法在更小的空间中编码原始数据。
文件压缩的两种主要类型是无损压缩和有损压缩。无损压缩允许完美恢复原始文件,而有损压缩则以损失部分数据质量为代价,实现更大的大小减小。
文件压缩工具的一个流行例子是WinZip,它支持包括ZIP和RAR在内的多种压缩格式。
对于无损压缩,质量保持不变。然而,对于有损压缩,由于它消除了较不重要的数据以更大程度地减小文件大小,因此可能会有明显的质量下降。
是的,就数据完整性而言,文件压缩是安全的,尤其是无损压缩。然而,像任何文件一样,压缩的文件可能会被恶意软件或病毒攻击,因此总是必要的有安装可靠的安全软件。
几乎所有类型的文件都可以被压缩,包括文本文件、图像、音频、视频和软件文件。然而,可达到的压缩水平可以在文件类型之间大大变化。
ZIP文件是一种使用无损压缩来减小一个或多个文件大小的文件格式。ZIP文件中的多个文件有效地被捆绑在一起成为一个单一的文件,这也使得分享变得更容易。
技术上,是的,尽管额外的减小大小可能是微不足道的甚至适得其反。压缩一个已经压缩的文件有时可能会增加它的大小,由于压缩算法添加的元数据。
要解压文件,你通常需要一个解压或解压缩工具,如WinZip或7-Zip。这些工具可以从压缩格式提取原始文件。