There's an input stream decorator, java.security.DigestInputStream, so that you can compute the digest while using the input stream as you normally would, instead of having to make an extra pass over the data.
MessageDigest md = MessageDigest.getInstance("MD5"); try (InputStream is = Files.newInputStream(Paths.get("file.txt"))) { DigestInputStream dis = new DigestInputStream(is, md); /* Read stream to EOF as normal... */ } byte[] digest = md.digest();
Use DigestUtils from Apache Commons Codec library:
We use cookies to ensure you have the best browsing experience on our website. By using our site, you
acknowledge that you have read and understood our
Cookie Policy &
Privacy Policy.
MessageDigest md = MessageDigest.getInstance("MD5");try (InputStream is = Files.newInputStream(Paths.get("file.txt"))) {
DigestInputStream dis = new DigestInputStream(is, md);
/* Read stream to EOF as normal... */
}
byte[] digest = md.digest();
FileInputStream fis = new FileInputStream(new File("foo"));String md5 = org.apache.commons.codec.digest.DigestUtils.md5Hex(fis);
fis.close()