我重复检查了谁没有用,因为同一文件的zlib哈希值不同。
我从客户端使用AES获得了加密数据(XML文件)。 我使用Cipher解密了数据,并获得了压缩后的字节数组,并对其进行了base64编码。
我解码base64,解压缩并得到我的XML文件。
如果再次执行此操作,则会从密码中获得不同的base64。我将其解码,unzlib并获得了与下面完全相同的XML。
由于这个问题,我的重复检查无法正常进行,因为base64值不同,我也不明白为什么。
我的base64值大约为3000个字符,只有10-15个最后一个字符不同。
实际上,该软件使用PHP,并且一切都很好。在JAVA的新服务器上,出现此错误。
因此客户端数据正确,JAVA做了我无法解释的事情。
有什么想法吗?
谢谢
答案 0 :(得分:0)
您的问题很难解析,但是我想您要说的是,如果将PHP压缩的文件解压缩然后再用Java重新压缩,则会得到不同的压缩数据。解压缩数据时,将获得原始的未压缩数据。
如果正确,那么就没问题了。由于您可以使用不同的设置,因此无法保证不同的压缩器将产生相同的结果,甚至相同的压缩器,或者您可以使用不同的版本,因此甚至不能保证相同的压缩器具有相同的设置。 “我将其解码,unzlib并获得与下面完全相同的XML。”,这意味着所有压缩器和解压缩器都在执行应有的功能。无法保证解压缩后再压缩将产生完全相同的结果。无损压缩机的唯一保证是压缩再进行解压缩将产生完全相同的结果。
您通过“我有重复检查”为自己创建了一个问题。检查压缩数据不会检查重复的未压缩数据。如果要查找重复项,或者要检查压缩,传输和解压缩过程的完整性,则需要同时使用未压缩数据,而不是压缩数据。< / p>