使用盐值哈希密码

3
我正在使用盐值生成带哈希值的密码。我的代码如下:

  `String psw="hello";  
   String tobehashed="";
   tobehashed=salt+psw;
   MessageDigest md = MessageDigest.getInstance("SHA-256");
   byte[] digest = md.digest(tobehashed.getBytes());
   System.out.println("Digest:"+digest);` 

我通过提供当前毫秒数作为种子来生成盐,盐的值随机生成并没有问题,但是无论盐的值如何,我得到的哈希值都相同。

实际上,盐的目的是获得不同的哈希值。这是我的输出:

随机数:-2098016229(这个数字一直在变化) 哈希值:[B@ca0b6(这个值始终相同)

有什么解决办法吗?

2个回答

4

B@ca0b6不是字节数组的内容,它是toString()表示法。遍历数组的字节并逐个打印。


但是如果我之后需要比较哈希值,我必须通过迭代循环来比较两个哈希值。这样正确吗? - user10101

4
你正在打印digest.toString()的结果,在字节数组的情况下,它不会将字节转换为有意义的输出。它只打印[B(这是字节数组的代码),@,然后是一个十六进制地址。随着你在Java方面获得更多经验,你会经常看到这种输出。
你需要使用循环来遍历摘要中的字节并逐个打印它们。

但是如果我之后需要比较哈希值,我必须通过迭代循环来比较两个哈希值。这样做对吗? - user10101
@user1258724:请参考https://dev59.com/BnRB5IYBdhLWcg3wa2q2,那里有关于这个问题的答案。 - Greg Hewgill

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接