java - 使用盐散列密码

标签 java hash passwords password-protection

我正在用盐生成密码的哈希值。我的代码:

  `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(这一直在变化) 摘要:[B@ca0b6(这保持不变) 解决办法是什么??

最佳答案

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

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

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

相关文章:

algorithm - 布隆过滤器设计

algorithm - 在车辆的驾驶模式中创建签名。

html - 更改 HTML 密码字段中显示的符号

java - Apple Java 属性 apple.awt.graphics.UseQuartz 的 Windows(和 Linux?)等效项是什么?

java - Jsoup 元素中的 NullPointer 异常

python - Python 中的内容查看检查

bash - 使用 Bash 在整个脚本中记住 root 密码

Java密码加密

java - 从非 Activity 开始 Activity

java - 正则表达式从字符串中提取引号中的单词?