我用 beefish 从 python 中的文本文件创建了一个加密文件。 beefish 使用 pycrypto。
所以我的源文本文件是 33742 字节,加密版本是 33752。 到目前为止没问题,但是......
当我使用 tar -czvf 压缩 test.enc(加密测试文件)时,最终文件为 33989 字节。为什么源文件加密后压缩不起作用?
到目前为止,唯一的选择似乎是先压缩它,然后再加密它,因为这样文件就会保持那么小。
最佳答案
压缩通过识别数据中的模式来工作。由于您无法识别加密数据中的模式(这就是重点),因此您无法对其进行压缩。
对于产生 33,742 字节输出的完美加密算法,理想情况下,您能够确定的关于解密的原始数据的所有内容是它可以容纳 33,742 字节,但不会超过 33,742 字节。如果您可以将其压缩到 31,400 字节,那么您会立即知道输入数据不是 32,000 字节的随机数据,因为随机数据是无模式的,因此是不可压缩的。这将表明加密方案部分失败。解密数据是否随机与任何人无关。
关于python - 压缩后的加密文件比源文件大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13544061/