package br.com.etyllica.util.checksum; import java.io.FileInputStream; import java.io.IOException; import java.math.BigInteger; import java.nio.charset.Charset; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class Checksum { public String getFileCheckSum(String filepath, ChecksumAlgorithm algorithm) throws NoSuchAlgorithmException, IOException{ MessageDigest md = MessageDigest.getInstance(algorithm.getCode()); FileInputStream fis = new FileInputStream(filepath); byte[] dataBytes = new byte[1024]; int nread = 0; while ((nread = fis.read(dataBytes)) != -1) { md.update(dataBytes, 0, nread); }; fis.close(); byte[] mdbytes = md.digest(); //convert the byte to hex format StringBuffer sb = new StringBuffer(""); for (int i = 0; i < mdbytes.length; i++) { sb.append(Integer.toString((mdbytes[i] & 0xff) + 0x100, 16).substring(1)); } return sb.toString(); } public String getCheckSum(String str, ChecksumAlgorithm algorithm){ String hashedPass = ""; try { MessageDigest messageDigest = MessageDigest.getInstance("MD5"); messageDigest.update(str.getBytes(Charset.forName("UTF8")), 0, str.length()); hashedPass = new BigInteger(1, messageDigest.digest()).toString(16); if (hashedPass.length() < 32) { hashedPass = "0" + hashedPass; } } catch (Exception e) { System.out.println("failed to create md5"); System.out.println(e.getMessage()); } return hashedPass; } }