2
: 개체를 압축하기 전에 및 압축 해제 한 후MD5 해시 불일치 나는 다음 코드를 사용하여 직렬화 객체를 압축하고
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;
}
: 다음 코드를 사용하여
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;
}
을 그리고 같은 객체를 압축 해제 Object, 다음 스 니펫을 사용하여 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를 취득하는 방법을 추천 해주세요.
감사합니다.
안녕하세요. 마크, 도움이되지 않았습니다. 다른 포인터를 제안 해 주시겠습니까? –