I am trying to figure out how to read multiple digests (md5, sha1, gpg) based on the same
InputStream
DigestInputStream
You could wrap a DigestInputStream
around a DigestInputStream
and so on recursively:
DigestInputStream shaStream = new DigestInputStream(
inStream, MessageDigest.getInstance("SHA-1"));
DigestInputStream md5Stream = new DigestInputStream(
shaStream, MessageDigest.getInstance("MD5"));
// VERY IMPORTANT: read from final stream since it's FilterInputStream
byte[] shaDigest = shaStream.getDigest().digest();
byte[] md5Digest = md5Stream.getDigest().digest();