2
た後、私は次のコードを使用して直列化可能なオブジェクトを圧縮しています:MD5ハッシュ不一致オブジェクトの圧縮
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ハッシュは一致しません。解凍後にObjectを取得する方法を教えてください。
ありがとうございました。
こんにちはマーク、これは助けになりませんでした。あなたはいくつかの他のポインタを提案できますか? –