package kubach.util;
import java.io.FileInputStream;
import java.io.InputStream;
import java.security.MessageDigest;
public class Md5Checksum {
public static byte[] createChecksum(String filename) throws Exception {
MessageDigest complete;
try (InputStream fis = new FileInputStream(filename)) {
byte[] buffer = new byte[1024];
complete = MessageDigest.getInstance("MD5");
int numRead;
do {
numRead = fis.read(buffer);
if (numRead > 0) {
complete.update(buffer, 0, numRead);
}
} while (numRead != -1);
}
return complete.digest();
}
public static String getMD5Checksum(String filename) throws Exception {
byte[] b = createChecksum(filename);
return bytesToHexString(b);
}
/**
* Transforms byte array into hexadecimal string
*
* @param digest input byte array
* @return a hex string
*/
public static String bytesToHexString(byte[] digest) {
StringBuilder hexString = new StringBuilder();
for (int i = 0; i < digest.length; i++) {
hexString.append(Integer.toString((digest[i] & 0xff) + 0x100, 16).substring(1));
}
return hexString.toString();
}
}