我想一個例子: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