51 Map<HashType, MessageDigest> digests =
new HashMap<>();
55 digests.put(type, MessageDigest.getInstance(type.getName()));
56 }
catch (NoSuchAlgorithmException ex) {
57 throw new TskCoreException(
"No algorithm found matching name " + type.getName(), ex);
62 byte[] data =
new byte[BUFFER_SIZE];
63 int totalChunks = (int) Math.ceil((
double) content.getSize() / (
double) BUFFER_SIZE);
65 for (
long i = 0; i < totalChunks; i++) {
67 read = content.read(data, i * BUFFER_SIZE, BUFFER_SIZE);
69 throw new TskCoreException(
"Error reading data at address " + i * BUFFER_SIZE +
" from content with ID: " + content.getId(), ex);
78 if (read == BUFFER_SIZE) {
80 digests.get(type).update(data);
83 byte[] subData = Arrays.copyOfRange(data, 0, read);
85 digests.get(type).update(subData);
90 List<HashResult> results =
new ArrayList<>();
92 byte hashData[] = digests.get(type).digest();
93 StringBuilder sb =
new StringBuilder();
94 for (
byte b : hashData) {
95 sb.append(String.format(
"%02x", b));
97 results.add(
new HashResult(type, sb.toString()));