gpt4 book ai didi

Java 将 SHA-256 哈希字符串与密码明文字符串进行比较

转载 作者:行者123 更新时间:2023-11-30 11:44:04 25 4
gpt4 key购买 nike

我正在尝试一个例子:

String hashAlgorithm ="sha-256"
...
md=MessageDigest.getInstance(hashAlgorithm);
byte[] enteredPasswordDigest = md.digest(policy.getPassword().getBytes());
if (!MessageDigest.isEqual(enteredPasswordDigest, realPassword.getBytes())) {
...
}

但是,哈希密码作为字符串存储在数据库中。当我进行比较时,它失败了。当我调试它时,enteredPasswordDigest 的长度为 32 字节,而 realPassword.getBytes() 的长度为 64 字节。

我错过了什么?

最佳答案

简单地说,

  • 获取输入的密码并对其进行散列/消化
  • byte[] 转换为字符串
  • 将该字符串与数据库中已经散列的密码字符串进行比较

试试这个,

String hashedStr = new String(enteredPasswordDigest);
if (!hashedStr.equals(realPassword)) {
...
} else {
...
}

文档: String.getBytes()

The behavior of this method when this string cannot be encoded in the default charset is unspecified. The java.nio.charset.CharsetEncoder class should be used when more control over the encoding process is required.

关于Java 将 SHA-256 哈希字符串与密码明文字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10946263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com