Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Format 为什么许多文件格式都是伪装的zip文件?_Format_Zip_Filesystems - Fatal编程技术网

Format 为什么许多文件格式都是伪装的zip文件?

Format 为什么许多文件格式都是伪装的zip文件?,format,zip,filesystems,Format,Zip,Filesystems,这些年来,我有很多机会对专有文件进行“逆向工程”,我注意到很多时候这些文件都是“伪装”的ZIP文件,只包含标准的XML、HTML、config和原始文本文件。然而,我不明白开发人员为什么要这样做 我脑海中关于这些“伪装”文件格式的几个例子如下: PPTX、XLS、DOCX以及可能所有微软的文件格式 埃普 JAR,WAR,虽然这个我能理解,因为它是一个档案 这类文件还有很多其他格式,有时甚至连真的不想公开读取数据文件的公司也依赖这种伪装的ZIP来存储数据(如游戏保存) 与自定义文件类型相比,Z

这些年来,我有很多机会对专有文件进行“逆向工程”,我注意到很多时候这些文件都是“伪装”的ZIP文件,只包含标准的XML、HTML、config和原始文本文件。然而,我不明白开发人员为什么要这样做

我脑海中关于这些“伪装”文件格式的几个例子如下:

  • PPTX、XLS、DOCX以及可能所有微软的文件格式
  • 埃普
  • JAR,WAR,虽然这个我能理解,因为它是一个档案
这类文件还有很多其他格式,有时甚至连真的不想公开读取数据文件的公司也依赖这种伪装的ZIP来存储数据(如游戏保存)

与自定义文件类型相比,ZIP文件的技术优势是什么


在ZIP之上构建(有时是专有的)新文件格式的做法是否有一个名称?

如果您希望新文件格式可供其他应用程序互操作,则需要完全定义格式。在其他标准(如ZIP、XML和HTML)的基础上构建,可以减少大量文档和维护工作

格式设计器通常也是第一个实现者。使用现有标准意味着他们可以使用现有的、已知正确的和工作工具来创建和阅读。例如,这意味着MicrosoftOfficeFileFormatDesigner不需要调试序列化和反序列化逻辑,因为它们已经在使用业界认可的XML

使用压缩存档而不是像TAR这样的普通存档意味着您的格式会在可能的情况下自动减少所需的存储空间。ZIP是ISO标准且无专利(只要它没有使用强大的算法加密),因此设计者和实现者不需要支付许可证费用,不像RAR那样

在不同的硬件或平台上实现消费应用程序可能需要重写大部分代码,除非它构建在已经流行的标准之上。例如,EPUB阅读器可以与ZIP阅读器库(通常内置于各种框架中)和HTML查看器一起修补。这几乎是开发人员的零努力,他们可以专注于其他功能。由于框架和CPU可能经过优化以处理ZIP压缩,因此它们的性能通常比自定义压缩格式好得多。另一个很少被考虑的因素是安全性和可靠性。自定义归档格式看起来可能工作得更快或压缩效率更高,但在实际数据上,它可能会崩溃,甚至返回错误的读取,这可能会导致安全漏洞或错误的结果

对于那些不希望自己的文件被读取的公司,有很多解决方案可以构建在ZIP之上。AES加密在AE-x下作为ZIP的开放标准提供。也许它们不需要隐藏整个结构,只需要隐藏值,它们可以加密XML/JSON或文件中的单个条目。EPUB DRM很容易被破坏,但不管电子书是否使用非zip格式,这种情况都会发生

我不认为有一个特定的名称来构建一个基于ZIP的新格式。当您想存储字符串时,您可以选择一种可用的文本编码标准,如果您想对值保密,您可以使用另一种加密标准对其进行加密,而不是发明新的编码方案。这些设计师所做的只是采用现有的标准,他们不仅使用ZIP,还使用XML、Unicode、各种图像格式等

关于微软的压缩格式,不是所有的。2007年以前的Office文件并非如此,这在一定程度上是实现和改进格式困难的原因(另一个原因是Microsoft故意通过不记录文件来阻止人们这样做)。XLSB是ZIP,但它使用二进制序列化代替XMLs,这加快了保存和打开的速度,但之后,它的运行速度和内存效率与XLSX文件一样快。ACCDB和前身MDB一样,不是ZIP文件,一般来说,数据库对压缩非常敏感。Visio转型较慢,Visio 2010使用基于XML的VDX(未压缩),然后在2013年添加了VSDX(基于XML和ZIP),而Project和Publisher似乎不会很快采用新格式。XPS、Nuget和Appx是zip,但csproj、vbproj等不是。MSI安装程序是归档文件,但不是ZIP文件


有趣的是,您在JAR&WAR停止了,因为继续下去,Android APK文件是ZIP文件(它本身可能包含它引用的JAR的内容),总体AAB也是如此。在iOS上,IPA文件也是ZIP文件。LibreOffice默认格式、ODT、ODS和ODP都是基于ZIP和XML的,与Microsoft Office的新格式几乎是同时设计的。

如果您希望新文件格式可供其他应用程序互操作,则需要完全定义格式。在其他标准(如ZIP、XML和HTML)的基础上构建,可以减少大量文档和维护工作

格式设计器通常也是第一个实现者。使用现有标准意味着他们可以使用现有的、已知正确的和工作工具来创建和阅读。例如,这意味着MicrosoftOfficeFileFormatDesigner不需要调试序列化和反序列化逻辑,因为它们已经在使用业界认可的XML

使用压缩存档而不是像TAR这样的普通存档意味着您的格式会在可能的情况下自动减少所需的存储空间。ZIP是ISO标准且无专利(只要它没有使用强大的算法加密),因此设计者和实现者不需要支付许可证费用,不像RAR那样

在不同的硬件或平台上实现消费应用程序可能需要重写大部分代码,除非它构建在已经流行的标准之上。A.