加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – MessageDigest digest()方法

发布时间:2020-12-15 05:07:06 所属栏目:Java 来源:网络整理
导读:MessageDigest中的digest()方法是否应该始终为同一输入提供相同的哈希值? 我试过这个,每次都为同一个输入得到不同的哈希值集 md5 = MessageDigest.getInstance("MD5");System.out.println(md5.digest("stringtodigest".getBytes()));System.out.println(md5
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()的结果 – 它没有显示数据的实际哈希值.你基本上得到一个字符串,表明你在字节数组上调用了toString(即[B部分],然后是Object.hashCode()返回的散列(这是@之后的十六进制值).该哈希码不会考虑数组中的数据.

尝试

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

查看实际数据.

编辑:关于从字符串数据创建MD5摘要的快速说明 – 在散列时,应始终明确使用相同的编码.例如:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读