关于“压缩然后加密,反之亦然“这让我思考了以下问题:许多压缩容器,如ZIP
、7z
和rar
支持加密这些容器。例如,7z
在7-Zip,程序会让您输入加密密码。
对于这些文件类型,是否按照上述问题中的建议对文件进行压缩然后加密,还是相反?或者,是否有某种方法可以同时压缩和加密数据?
当我创建加密的 7z 文件时,我可以查看加密档案中的文件名,但无法查看内容无需输入密码即可查看这些文件。这怎么可能呢?顺便问一下,有没有办法加密 7z 或类似的存档,使得不使用密码就看不到其中的文件名和目录结构?
我希望答案有明确的来源/参考,而不是仅仅猜测。我们都可以对此做出猜测,但如果有人能向我展示证明它以某种方式起作用的文档,那就太理想了。
答案1
我认为 7-Zip 和其他归档工具可以压缩前他们会加密,原因已在链接的博客文章中说明。但我找不到任何文件证实这一点,也无法通过查看7-Zip 源代码。
但是,我可以解释为什么文件名不加密。您可能知道,7z 格式包含一个包含文件信息和其他元数据的标头。除非您明确启用它,否则 7-Zip 不会加密此标头。您可以通过检查加密文件名底部的方框加密Windows 上的档案创建屏幕的部分,如下图红色突出显示。
在 Linux 和其他类 Unix 操作系统上(以及 Windows 上的命令行 7-Zip 工具),您可以通过-mhe=on
在7z
命令中添加开关来启用标头加密。
答案2
我希望得到有明确来源/参考的答案,而不是仅仅是猜测。
哦,你甚至可以做得更好。你可以自己尝试一下,并根据逻辑和事实得出结论。这里真的没有必要猜测。
所有这些程序都是先压缩然后加密,这是您可以轻松自行验证的事实。
以可压缩数据为例,例如大量 .txt 文本文件(比如 ASCII 文本文件)。
仅压缩这些.txt文件并查看生成的文件大小。
现在使用上述程序压缩和加密.txt文件并查看文件大小。
现在首先加密 .txt 文件,然后尝试“压缩”加密文件并查看文件大小。
这个实验将会显示什么?1 和 2 基本上具有相同的大小,而 3 的大小将与未压缩的数据相同。
因为加密算法做出的保证之一是加密数据看起来是随机的(如果不是,则说明您的加密算法被破解了,这也是事实)。
并且你无法压缩随机性。
这甚至比参考文献更好:“亲自尝试一下,看看”。
事实 1:好的加密算法会产生看似随机的数据
事实 2:随机数据无法压缩
因此很明显,如果文件大小小于所有文件大小的总和,那么压缩就在加密之前进行了。
此外,很明显,如果您“压缩和加密”一组可压缩文件但文件大小没有增加,那么您的“压缩和加密”软件就无法修复,可以放心地当作无知的人编写的垃圾扔掉;)
事实的有趣之处就在于此:你无法与事实争论,而且陈述事实时你也不会犯错。
PS:不要对已经压缩的文件进行此操作,例如一组 .png 文件,这是行不通的
答案3
对于这些文件类型,是否按照上述问题中的建议对文件进行压缩然后加密,还是相反?或者,是否有某种方法可以同时压缩和加密数据?
我的第一个问题是为什么,但这是您需要查阅技术文档(源代码、专利等)才能知道的事情。zip 软件背后的想法是它们可以解决问题,您无需考虑。
当我创建加密的 7z 文件时,我可以查看加密档案中的文件名,但如果不输入密码则无法查看这些文件的内容。这是怎么回事?
文件内容是加密的,但目录(文件名列表、加密文件数据的相对位置和文件属性)未加密。
顺便问一下,有没有什么方法可以加密 7z 或类似的档案,使得如果不使用密码就看不到其中的文件名和目录结构?
当然可以。使用任何其他文件加密软件。Truecrypt、OpenSSL 的各种工具等。