19 package org.sleuthkit.datamodel;
21 import java.io.IOException;
22 import java.math.BigInteger;
23 import java.security.MessageDigest;
24 import java.security.NoSuchAlgorithmException;
25 import java.util.logging.Level;
26 import java.util.logging.Logger;
27 import java.io.InputStream;
34 private final static int BUFFER_SIZE = 16 * 1024;
48 Logger logger = Logger.getLogger(
HashUtility.class.getName());
50 byte[] buffer =
new byte[BUFFER_SIZE];
51 MessageDigest md = MessageDigest.getInstance(
"md5");
52 int len = in.read(buffer);
54 md.update(buffer, 0, len);
55 len = in.read(buffer);
57 byte[] hash = md.digest();
58 BigInteger bigInt =
new BigInteger(1, hash);
59 hashText = bigInt.toString(16);
61 while (hashText.length() < 32) {
62 hashText =
"0" + hashText;
64 }
catch (NoSuchAlgorithmException ex) {
65 logger.log(Level.WARNING,
"No algorithm known as 'md5'", ex);
80 return md5Hash.matches(
"^[A-Fa-f0-9]{32}$");
91 return sha1Hash.matches(
"^[A-Fa-f0-9]{40}$");
102 return sha256Hash.matches(
"^[A-Fa-f0-9]{64}$");
115 return md5.toLowerCase().equals(
"d41d8cd98f00b204e9800998ecf8427e");
132 Logger logger = Logger.getLogger(
HashUtility.class.getName());
135 file.getSleuthkitCase().setMd5Hash(file, md5Hash);
137 logger.log(Level.WARNING,
"Error updating content's md5 in database", ex);
static String calculateMd5(AbstractFile file)
static boolean isNoDataMd5(String md5)
static boolean isValidSha256Hash(String sha256Hash)
static boolean isValidSha1Hash(String sha1Hash)
static String calculateMd5Hash(Content content)
static boolean isValidMd5Hash(String md5Hash)