로 문자열을 해시 비교 :자바는 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