我正在用盐生成密码的散列值。我的代码:
`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/