与zlib不同但相同的结果

问题描述 投票:0回答:1

我有重复的检查谁没有工作,因为我的zlib哈希是相同的文件不同。

我从客户端获得了带有AES的加密数据(XML文件)。我解密了数据(使用Cipher)并获得了压缩数据和base64编码的字节数组。

我解码base64,unzlib并得到了我的XML文件。

如果我再次这样做,我从Cipher中得到了一个不同的base64。我解码它,unzlib并获得与下面完全相同的XML。

有了这个问题,我的重复检查不起作用,因为base64值不同,我不明白为什么。

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

实际上这个软件是PHP的,一切都很好。在JAVA中的新服务器上,我们遇到了这个错误。

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

任何的想法 ?

谢谢

java base64 zip zlib
1个回答
0
投票

您的问题很难解析,但我认为您所说的是,如果您解压缩由PHP压缩的内容然后使用Java重新压缩它,您将获得不同的压缩数据。解压缩该数据时,您将获得原始的未压缩数据。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.