I T H

[참고용자료] BCryptPasswordEncoder 암호화 클래스 본문

참고용자료

[참고용자료] BCryptPasswordEncoder 암호화 클래스

thdev 2024. 1. 24. 10:06

[ BCryptPasswordEncoder ]

BCryptPasswordEncoder는
Spring Security 프레임워크에서 제공하는 클래스로 비밀번호를 암호화할 때 사용.
단방향으로 암호화하던 기존의 알고리즘과 달리 (SHA / MD 등)
평문을 암호화 하는 데 있어 salt라는(*소금, 솔트 : 솔트란 해시함수를 돌리기 전에 원문에 임의의 문자열을 덧붙이는 것) 것을 적용하여 여러번 해싱하여 더 안전하게 암호를 관리하도록 함
 
BCrypt는 동일한 평문 비밀번호를 암호화하더라도 해시 값은 매번 다른 값이 도출됨
BCryptPasswordEncoder에서는 평문과 암호화된 값의 일치 여부를 확인하는 메소드가 제공됨

 

프로젝트 내에서는 2가지의 제공 메소드를 사용함

 

1. encode 

평문 비밀번호를 암호화하여 해시값으로 변형하는 메소드 
무작위로 생성된 salt가 적용되어서 동일한 평문 비밀번호라 하더라도 다른 결과값의 암호화 문구가 반환됨 
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); // 비밀번호 암호화 처리
String encPwd = passwordEncoder.encode("thpwd123!");

 

2. matches 

로그인 시 입력한 평문 비밀번호와 데이터베이스에서 조회한 암호화된 비밀번호를 비교하여 일치 여부를 확인하기 위해 사용하는 메소드
두 비밀번호가 일치하는 경우 true 값을 반환, 그렇지 않은 경우 false 값을 반환하므로 
해당 값을 통해 로그인 시 비밀번호 일치 여부를 체크할 수 있음
... 중간 생략 
if(!passwordEncoder.matches(password, customUserDetails.getPassword())) {
   throw new BadCredentialsException("비밀번호가 일치하지 않습니다.");
}