Java Deflater,现在和将来都有相同的结果(确定性)

时间:2014-07-06 18:29:33

标签: java compression zlib deterministic

我使用Deflater和SHA-1编写了一个备份程序来存储文件和哈希值。我看到Java的Deflater使用了zlib。如果我明确设置了Deflater的级别,那么无论平台和JRE版本如何,我都能期望获得相同的字节序列吗?

如果没有,那我该怎么用?有没有稳定和快速的纯Java实现?

1 个答案:

答案 0 :(得分:2)

压缩前执行SHA-1。然后验证压缩和解压缩的正确性。

无法保证今天压缩机产生的内容与明天压缩机产生的相同输入相同。并且应该没有这样的保证,因为这会妨碍压缩的改进。

唯一的保证是压缩 - 解压缩过程是无损的,因此您从解压缩器获得的正是您为压缩器提供的。因此,您需要在压缩器的输入和解压缩器的输出上计算签名。忽略中间压缩流。