티스토리 뷰
PasswordEncoder
Spring Security에서 제공하는 인터페이스로, 비밀번호 암호화와 비교를 위한 표준 메서드를 정의하고 있습니다.
이 인터페이스를 구현한 구현체를 사용하면 비밀번호를 안전하게 저장하고 검증할 수 있습니다.
PasswordEncoder 메서드
encode(CharSequence rawPassword): 원본 비밀번호를 암호화하여 해시 값을 반환합다.
matches(CharSequence rawPassword, String encodedPassword): 원본 비밀번호와 암호화된 비밀번호가 일치하는지 검증합니다.
upgradeEncoding(String encodedPassword): 기존에 저장된 비밀번호의 암호화 방식을 업그레이드할 때 사용합니다.
PasswordEncoder 구현체
BCryptPasswordEncoder: BCrypt 해싱 함수를 사용하여 비밀번호를 암호화합니다.
Argon2PasswordEncoder: Argon2 해싱 함수를 사용하여 비밀번호를 암호화합니다.
NoOpPasswordEncoder: 비밀번호를 암호화하지 않고 그대로 사용합니다.
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
public class PasswordEncoderExample {
public static void main(String[] args) {
// PasswordEncoder 생성
PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
// 비밀번호 암호화
String rawPassword = "myPassword123";
String hashedPassword = passwordEncoder.encode(rawPassword);
System.out.println("Hashed Password: " + hashedPassword);
// 비밀번호 검증
boolean isMatch = passwordEncoder.matches("myPassword123", hashedPassword);
System.out.println("Password Match: " + isMatch);
}
}
BCryptPasswordEncoder 객체를 생성합니다.
encode() 메서드를 사용하여 원본 비밀번호를 암호화합니다.
matches() 메서드를 사용하여 원본 비밀번호와 암호화된 비밀번호가 일치하는지 확인합니다.
이와 같이 PasswordEncoder 인터페이스와 그 구현체를 사용하면 비밀번호를 안전하게 저장하고 검증할 수 있습니다.