gpt4 book ai didi

java - MessageDigest 摘要() 方法

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:31:01 25 4
gpt4 key购买 nike

MessageDigest 中的 digest() 方法不应该总是为相同的输入提供相同的哈希值吗?

我试过了,每次我都得到相同输入的不同哈希值集

md5 = MessageDigest.getInstance("MD5");
System.out.println(md5.digest("stringtodigest".getBytes()));
System.out.println(md5.digest("stringtodigest".getBytes()));
System.out.println(md5.digest("stringtodigest".getBytes()));

更新:将参数更改为 digest() 方法

最佳答案

您看到的是调用 byte[].toString() 的结果 - 它没有向您显示数据的实际哈希值。你基本上得到一个字符串,它表明你已经在字节数组(即 [B 部分)上调用了 toString ,然后是 Object 返回的散列.hashCode()(这是 @ 之后的十六进制值)。该哈希码不考虑数组中的数据

尝试

System.out.println(Arrays.toString(md5.digest(byteArrayToDigest)));

查看实际数据

编辑:关于从 string 数据创建 MD5 摘要的快速说明 - 在散列时,您应该始终明确地使用相同的编码。例如:

byte[] hash = md5.digest(text.getBytes("UTF-8"));

关于java - MessageDigest 摘要() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7553760/

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