Spring
PasswordEncoder 한 비밀번호를 비교해주는 matches와 이유
H.S-Backend
2024. 6. 21. 21:04
암호화된 비밀번호를 비교할 때
equals를 사용하는 것은 적절하지 않다.
passwordEncoder.matches를 사용하는 것이
안전한 이유는
비밀번호 해싱 및 솔팅
비밀번호는 단순히 암호화 되는것이 아닌 보통 해시 함수와 솔팅(solting) 과정을 거친다.
같은 비밀번호라도 매번 다른 솔트(정렬)값이 추가되기에
해시결과가 항상 달라진다.
그래서 같은 비밀번호도 해시 결과가 다르기때문에
equals로 비교하면 항상 다르게 나온다.
해싱이란
해싱은 해시 함수에 문자열 입력값을 넣어서 특정한 값으로 추출하는 것을 의미한다.
솔팅(solting)이란
정렬을 의미한다.
보안성
passwordEncoder.matches는
원래의 비밀번호를 해시하고
이를
데이터베이스에 저장된 해시값과 비교하는 역할을 한다.
해시 함수는
단방향 함수이기에 원래 비밀번호를 복구할 수 없고
이로 인해서 보안성이 강화된다.
일관된 비교
passwordEncoder.matches는
내부적으로
해싱 알고리즘을 통해서 일관된 비교를 수행하기에
해싱된 비밀번호를 안전하게 비교할 수 있다.
passwordEncoder.matches
변수는 꼭 소문자로 시작해야된다.
반응형