try (InputStream is = item.getInputStream())
{
final MD5DigestCalculatingInputStream digestStream = new MD5DigestCalculatingInputStream(is);
final byte[] bytes = IOUtils.toByteArray(digestStream);
final String newFileName = Hex.encodeHexString(digestStream.getMd5Digest()) + "."
+ FilenameUtils.getExtension(item.getName());
final String newFileName2 = Hex.encodeHexString(digestStream.getMd5Digest()) + "."
+ FilenameUtils.getExtension(item.getName());
}
그래서 위의 코드에 난 다음 얻을 결과 :두 개의 다른 MD5가 동일한 입력에 있습니까?
newFileName = e9f08a9c181551336e58119edd23109b.png
(수정)
newFileName2 = d41d8cd98f00b204e9800998ecf8427e.png
(! 잘못된)
모든 다음과 같은 결과 또한 newFileName2처럼 될 것입니다. 올바른 newFileName이 무엇인지는 중요하지 않습니다. newFileName2는 항상 위에 표시된 값과 같습니다. 나는이 문제가 어떤 경우인지 정말로 모른다.
아마도'getMd5Digest'가 스트림을 소비하고있을 것입니다. –
'digestStream.getMd5Digest()'의 후속 호출을 비교하기 시작합니다. 동일한 결과가 있습니까? –