gpt4 book ai didi

java - 同一输入有两个不同的 MD5?

转载 作者:行者123 更新时间:2023-12-01 21:09:03 25 4
gpt4 key购买 nike

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());
}

所以在上面的代码中我得到以下结果:

newFileName = e9f08a9c181551336e58119edd23109b.png(正确)

newFileName2 = d41d8cd98f00b204e9800998ecf8427e.png(错误!)

所有后续结果也将类似于 newFileName2。正确的 newFileName 是什么并不重要,newFileName2 始终与上面所示的值相同。我实在不知道这个问题是什么情况?

最佳答案

getMD5Digest 方法调用 MessageDigest.digest。

(来源) https://github.com/aws/aws-sdk-java/blob/master/aws-java-sdk-s3/src/main/java/com/amazonaws/services/s3/internal/MD5DigestCalculatingInputStream.java

MessageDigest.digest 的文档说

The digest is reset after this call is made.

https://docs.oracle.com/javase/7/docs/api/java/security/MessageDigest.html#digest()

因此,第一个名称是输入流的 MD5 摘要。第二个名称是新重置的摘要的 MD5,这就是它始终相同的原因。

关于java - 同一输入有两个不同的 MD5?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41613588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com