gpt4 book ai didi

java - MessageDigest 的两种更新方法之间的真正区别是什么?

转载 作者:行者123 更新时间:2023-12-01 20:22:16 26 4
gpt4 key购买 nike

示例一:

FileInputStream fis = new FileInputStream(path);
MessageDigest digest = MessageDigest.getInstance("MD5");
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) != -1) {
digest.update(buffer, 0, len);
}
BigInteger bigInt = new BigInteger(1, digest.digest());
return bigInt.toString(16);

示例二:

FileInputStream fis = new FileInputStream(path);
MessageDigest digest = MessageDigest.getInstance("MD5");
byte[] buffer = new byte[1024];
while ((fis.read(buffer)) != -1) {
digest.update(buffer);
}
BigInteger bigInt = new BigInteger(1, digest.digest());
return bigInt.toString(16);

在上面的两个例子中,我使用了两种不同的更新方法。当我传递相同的文件路径时,这两个操作返回两个不同的结果。 update方法是append模式吗?为什么我得到不同的结果?

最佳答案

第一个有效,第二个无效。 read 不一定填满整个缓冲区,但在第二个示例中,您始终将所有字节发送到摘要。

关于java - MessageDigest 的两种更新方法之间的真正区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44514374/

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