我想一个例子:Java的比较SHA-256散列字符串密码明文字符串
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个字节长度。
我错过了什么?
你确定realPassword.getBytes()的长度是64位(= 8字节)而不是字节吗?因为我不知道可以创建64位输出的安全散列函数。 – Robert