У меня есть InputStream входящего соединения Http (поступающего через объект javax.servlet.http.HttpServletRequest).Пока он используется / обрабатывается, из него создается дайджест сообщения SHA_512.Это текущее состояние реализации, которое я не могу изменить.
Из-за требований моей задачи мне необходимо ТАКЖЕ вычислить сигнатуру дайджеста MD5 для того же контента .
Единственный способ, которым я смог это сделать, - это сохранить исходное содержимое в байтовом массиве, а затем просто создать из него два отдельных ByteArrayInputStreams и переварить их.
ByteArrayOutputStream baos = new ByteArrayOutputStream();
IOUtils.copy(request.getInputStream(), baos);
byte[] originalContent = baos.toByteArray();
InputStream is1 = new ByteArrayInputStream(originalContent);
// is1 being processed, SHA_512 calculated...
DigestInputStream dis2 = new DigestInputStream(new ByteArrayInputStream(originalContent), MessageDigest.getInstance("MD5"));
IOUtils.toByteArray(dis);
String myMD5 = BinaryUtils.toHex(dis.getMessageDigest().digest());
Есть ли другой, более эффективный способ?
Спасибо.