为什么 MS Office 文件实际上是带有其他扩展名的 ZIP 文件?

为什么 MS Office 文件实际上是带有其他扩展名的 ZIP 文件?

我一直在尝试对 Microsoft Office 文件格式进行逆向工程,我发现它们实际上是 Open XML,而“Open XML”文件格式实际上是一种 ZIP 格式。

当我使用二进制(十六进制)编辑器打开 Office 文件时,它具有与 ZIP 文件相同的文件签名(签名为PK.. (67324752))。

PK签名

顺便说一句,Office 文件可以像任何 ZIP 文件一样用 WinRAR 打开。

我的问题是:为什么微软决定使用 ZIP 容器和 XML,而不是使用带有自定义签名和标头的专有文件格式?这难道不会使逆向工程更容易或读写速度更慢吗?

答案1

就问题的‘事实’部分而言……

为什么微软决定使用 ZIP 容器和 XML,而不是具有自定义签名和标头的专有文件格式?

他们过去就是这样做的,后来基于CDF格式(.doc、.xls 等)一直到 Office 2003,后来又尝试使用原始单文件 XML 作为文档格式,直到他们最终切换到ZIP+XML 适用于 Office 2007 中的新格式 (.docx、.xlsx 等)。

至于“为什么”,只有微软自己知道为什么做出这样的选择,但 ZIP 容器在当时已经非常普遍(例如,对于竞争的 OpenDocument 规范、Java .jar 档案等等),所以你可以自己猜测。

你可以在维基百科上找到更多详细信息:Office Open XML 标准化

这难道不会让逆向工程变得更容易吗?

该格式的字面名称是“Office Open XML”,并拥有作为 ECMA 标准发布的全套规范(ECMA-376)欧盟要求支持某种形式的开放文档格式。

因此,防止逆向工程并不是其目标;恰恰相反。这也是旧二进制 CDF 格式被废弃的原因。

相关内容