我正在用盐生成密码的散列值。我的代码:

  `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);`

我通过以毫秒为单位提供种子作为当前时间来生产盐,我对盐没有问题(我得到随机值)但不管盐如何我得到相同的哈希值..

其实salt的目的是为了得到不同的hash值。。
这是我的输出;
Random nubr:-2098016229(this keeps changing) Digest:[B@ca0b6(this remains same)解决办法是什么??

最佳答案

您正在打印 digest.toString() 的结果,在字节数组的情况下,它不会将字节转换为有意义的输出。它只打印 [B (这是字节数组的代码)、 @ ,然后是一个十六进制地址。随着您对 Java 的体验越来越多,您将经常看到此输出。

您将需要使用循环来遍历摘要中的字节并单独打印它们。

关于java - 使用盐散列密码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9631938/

10-12 03:18