[Spring Security] PasswordEncoder

알리아 Alea·2023년 9월 6일

Spring Security

목록 보기
2/4

스프링 시큐리티에서 지원하는 비밀번호 암호화 방식이 궁금해서 PasswordEncoder 인터페이스를 정리해보기로 했다.

PasswordEncoder에는 encode()와 mathes() 두 개의 메소드가 존재한다.

1. String encode(CharSequence rawPassword)

  • 평문의 암호를 암호화 하는 메소드
  • 무작위로 생성된 salt가 결합되어 같은 비밀번호를 인코딩해도 매번 다른 결과값으로 반환
  • 회원가입시 사용
	# salt 임의의 문자열로 소금친다는 의미 

2. boolean matches(CharSequence rawPassword, String encodedPassword)

  • 평문의 비밀번호와 DB에 있는 인코딩된 암호가 일치하는지 확인
  • 디코딩 X -> 복호화 불가능
  • 로그인시 사용

encode가 매번 다른 결과값을 반환하기 때문에 equals로 값을 비교할 수 없다!
제공되는 maches 함수를 이용해야 한다.

그렇다면 matches()는 매번 다르게 인코딩되는 암호와 평문을 어떻게 비교할까?
salt값을 특정 방식으로 뽑아낸다음 남은 값을 비교하는 것 같긴한데
이게 너무 궁금해서 구글링을 엄청 했지만 속 시원한 글을 찾지 못했다.

-- 이 부분은 조금 더 공부해서 추가 작성 예정

0개의 댓글