与zlib不同但相同的结果

时间:2018-08-31 19:26:58

标签: java base64 zip zlib

我重复检查了谁没有用,因为同一文件的zlib哈希值不同。

我从客户端使用AES获得了加密数据(XML文件)。 我使用Cipher解密了数据,并获得了压缩后的字节数组,并对其进行了base64编码。

我解码base64,解压缩并得到我的XML文件。

如果再次执行此操作,则会从密码中获得不同的base64。我将其解码,unzlib并获得了与下面完全相同的XML。

由于这个问题,我的重复检查无法正常进行,因为base64值不同,我也不明白为什么。

我的base64值大约为3000个字符,只有10-15个最后一个字符不同。

实际上,该软件使用PHP,并且一切都很好。在JAVA的新服务器上,出现此错误。

因此客户端数据正确,JAVA做了我无法解释的事情。

有什么想法吗?

谢谢

1 个答案:

答案 0 :(得分:0)

您的问题很难解析,但是我想您要说的是,如果将PHP压缩的文件解压缩然后再用Java重新压缩,则会得到不同的压缩数据。解压缩数据时,将获得原始的未压缩数据。

如果正确,那么就没问题了。由于您可以使用不同的设置,因此无法保证不同的压缩器将产生相同的结果,甚至相同的压缩器,或者您可以使用不同的版本,因此甚至不能保证相同的压缩器具有相同的设置。 “我将其解码,unzlib并获得与下面完全相同的XML。”,这意味着所有压缩器和解压缩器都在执行应有的功能。无法保证解压缩后再压缩将产生完全相同的结果。无损压缩机的唯一保证是压缩再进行解压缩将产生完全相同的结果。

您通过“我有重复检查”为自己创建了一个问题。检查压缩数据不会检查重复的未压缩数据。如果要查找重复项,或者要检查压缩,传输和解压缩过程的完整性,则需要同时使用未压缩数据,而不是压缩数据。< / p>