压缩算法是否可以为两个不同的文件生成相同的输出?

msv*_*cyc 8 compression algorithm hash unique

我想知道压缩算法是否总是为两组不同的文件生成唯一的输出.

比方说,我有两个文件A和B,并说我正在为每个文件应用压缩算法(例如PKZIP - 这可能是任何压缩算法),分别得到A.zip和B.zip.对于A和B的某种组合,A.zip是否可能与二进制级别的B.zip完全相同.如果这不可能,我们可以安全地假设压缩等同于保证uniquenes的加密散列?另一方面,如果有可能,请您提供一个样本A和B文件以及用于验证这种双重性的压缩算法吗?

bdo*_*lan 21

无损压缩(在ZIP文件中使用)将始终为不同的文件生成不同的输出 - 否则您将无法可靠地恢复原始数据.但是,输出数据可以是任何大小 - 对于某些输入,它将大于原始输入.因此,这通常不是非常有用的散列,通常需要固定大小的输出.

有损压缩(例如,MP3,JPEG等)可以为不同的输入产生相同的输出 - 因此,您无法恢复原始数据,而是获得类似于它的东西.因此,鸽笼原理不是问题,因此您可以保证它会减小输出尺寸,通常甚至可以指定所需的输出尺寸.但是,由于类似但略有不同的输入通常会产生相同的输出,因此对于散列也没有用,因为散列需要输入中的微小变化才能在输出中产生大的变化.


Mar*_*som 14

这不可能.如果压缩文件相同,那么在解压缩时它们如何生成不同的结果?

  • 简单明了:+1.请注意,这仅适用于无损压缩(OP建议通过谈论PKZIP,但没有明确提及). (2认同)