与zlib不同但相同的结果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了与zlib不同但相同的结果相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

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

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

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

任何的想法 ?

谢谢

答案

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

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

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

以上是关于与zlib不同但相同的结果的主要内容,如果未能解决你的问题,请参考以下文章

Core Data fetch 中的谓词返回的结果与数组上的相同谓词不同

连接两个具有相同键但不同字段的表

相同的代码但不同的结果

在 iOS 和 Android 中使用相同的代码但垂直边距的结果不同的 React Native 应用程序

加密算法在linux下相同输入每次加密结果都不同的问题

Nodejs crypto.pbkdf2 结果与 CryptoJS.PBKDF2 不同