像 ZIP 和 7-Zip 这样的加密压缩容器是先压缩还是先加密?

nhi*_*kle 7 compression encryption 7-zip

的讨论“压缩和加密,然后,反之亦然”促使我思考以下问题:许多压缩容器,如ZIP7zrar支持加密这些容器。例如,7z7-Zip 中创建文件时,该程序允许您输入加密密码。

对于这些文件类型,文件是按上述问题中的建议压缩然后加密,还是相反?或者,是否有某种方法可以同时压缩和加密数据?

创建加密的 7z 文件时,我可以查看加密存档中的文件名,但如果不输入密码,则无法查看这些文件的内容。这怎么可能?顺便说一句,有没有办法加密 7z 或类似的存档,以便在不使用密码短语的情况下看不到其中的文件名和目录结构?

我更喜欢有明确来源/参考的答案,而不仅仅是猜测。我们都可以对此进行猜测,但是如果有人可以向我展示证明它以一种或另一种方式工作的文档,那将是理想的。

Pat*_*hes 10

由于链接的博客文章中所述的原因,我认为 7-Zip 和其他存档工具加密之前会进行压缩。但是我找不到任何可以证实这一点的文档,也无法通过查看7-Zip 源代码立即确定。

但是,我可以解释为什么文件名没有加密。您可能知道,7z 格式包含一个包含文件信息和其他元数据的标头。除非您明确启用,否则 7-Zip 不会加密此标头。您可以通过选中Windows 上存档创建屏幕的加密部分底部的加密文件名框来执行此操作,下面以红色突出显示。

突出显示加密段的 7-Zip 存档创建屏幕

在 Linux 和其他类 Unix 操作系统(以及 Windows 上的命令行 7-Zip 工具)上,您可以通过向命令添加-mhe=on开关来启用标头加密7z


Wee*_*ezy 9

我更喜欢有明确来源/参考的答案,而不仅仅是猜测。

哦,你甚至可以做得更好。您可以自己尝试,并根据逻辑和事实得出结论。真的没必要在这里揣测。

所有这些程序都会先压缩然后加密,这是您可以轻松验证的事实。

获取可压缩数据,例如大量 .txt 文本文件(例如 ASCII 文本文件)。

  1. 仅压缩这些 .txt 文件并查看生成的文件大小。

  2. 现在使用上述程序压缩和加密 .txt 文件并查看文件大小。

  3. 现在首先加密 .txt 文件,然后尝试“压缩”加密文件并查看文件大小。

这个实验会显示什么?1 & 2 的大小基本相同,而 3 的大小与非压缩数据的大小相同。

因为加密算法的一项保证是加密数据看起来是随机的(如果不是,则您的加密算法已损坏,这也是事实)。

而且你不能压缩随机性。

这甚至比参考资料更好:它是“亲自尝试并查看”。

事实 1:好的加密算法会产生看似随机的数据

事实2:随机数据无法压缩

所以很明显,如果你得到的文件大小小于所有文件大小的总和,那么压缩就会在加密之前进行。

此外,很明显,如果您“压缩和加密”一组可压缩文件并且最终没有增加大小,那么您的“压缩和加密”软件就会损坏而无法修复并且可以安全地作为垃圾写入丢弃无知的人;)

这就是事实的有趣之处:你不能与事实争论,陈述事实时也不能出错。

PS:不要尝试使用已经压缩的文件,比如一组 .png 文件,这是行不通的

  • 我喜欢你的测试方法;这似乎是解决问题的合乎逻辑的方法。博客文章中的信息确实暗示以您描述的方式来做是有意义的;确实,我以为会的。然而,软件通常不会以最有意义的方式工作——有很多考虑不周的软件的例子。我问是因为我很好奇是否有任何证据。我完全理解这篇博文,并完整地阅读了它;这并不妨碍我提出进一步的问题。 (2认同)