gpt4 book ai didi

object - 对象压缩后 MD5 哈希不匹配

转载 作者:行者123 更新时间:2023-12-05 01:29:12 26 4
gpt4 key购买 nike

我正在使用以下代码片段压缩可序列化对象:

 private byte[] compressObject(Object obj) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream gzipOut = new GZIPOutputStream(baos);
ObjectOutputStream objectOut = new ObjectOutputStream(gzipOut);
objectOut.writeObject(obj);
objectOut.close();
byte[] bytes = baos.toByteArray();

return bytes;
}

并使用以下代码片段解压缩相同的对象:

private Object decompressObject(byte[] bytes) throws IOException,ClassNotFoundException {
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
GZIPInputStream gzipIn = new GZIPInputStream(bais);
ObjectInputStream objectIn = new ObjectInputStream(gzipIn);
Object obj = objectIn.readObject();
objectIn.close();

return obj;
}

在压缩对象之前和解压缩对象之后,我使用以下代码段计算 MD5 哈希值:

public String getMD5Hash(Object obj) throws IOException, NoSuchAlgorithmException {

ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = new ObjectOutputStream(bos);
out.writeObject(obj);
byte[] data = bos.toByteArray();
MessageDigest m = MessageDigest.getInstance("MD5");
m.update(data,0,data.length);
BigInteger i = new BigInteger(1,m.digest());
return String.format("%1$032X", i);
}

但是压缩前和压缩后计算出的MD5 Hash不匹配。请指点解压后如何获取Object。

谢谢。

最佳答案

您可能需要在 GZIPOutputStream 上使用 finish 方法来压缩数据。

关于object - 对象压缩后 MD5 哈希不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10258449/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com