package com.neverwinterdp.scribengin; import java.security.MessageDigest; import org.apache.commons.net.util.Base64; public class RecordChecksum { private MessageDigest keyDigest ; private MessageDigest dataDigest ; private boolean invalidUpdateState ; public RecordChecksum() throws Exception { keyDigest = MessageDigest.getInstance("sha1"); dataDigest = MessageDigest.getInstance("sha1"); } synchronized public void update(Record record) throws Exception { if(invalidUpdateState) { throw new Exception("Invalid state, cannot add update record") ; } keyDigest.update(record.getKey().getBytes()); dataDigest.update(record.getData()); } public byte[] getKeyDigest() { invalidUpdateState = true; return keyDigest.digest(); } public String getKeyDigestAsBase64() { invalidUpdateState = true; return Base64.encodeBase64String(keyDigest.digest()); } public byte[] getDataDigest() { invalidUpdateState = true; return dataDigest.digest(); } public String getDataDigestAsBase64() { invalidUpdateState = true; return Base64.encodeBase64String(dataDigest.digest()); } }