[Spring Security] Password Encoder(비밀번호 암호화하기)

SUN·2024년 1월 15일

Spring Security

목록 보기
1/1

1. Spring Securiy 의존성 주입

gradle에 spring-security를 추가한다.

build.gradle

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-security'
}

2. config 설정

@Configuration : 설정파일이라는 것을 알려주는 어노테이션
@Bean : 빈으로 등록하는 어노테이션 (return 타입이 주입됨)

@Configuration
public class SecurityConfig {

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
 }

3. 암호화하기

String encode(CharSequence rawPassword)

class PasswordEncoderTest {
	@Autowired
    PasswordEncoder passwordEncoder;

	public void passwordEncoder {
    	String originPassword = "1234";
		String encodedPassword = passwordEncoder.encode(originPassword);

		System.out.println(encodedPassword);
	}
}

결과

$2a$10$u1uN2nOehZ9chk4VU4rTB.a4sbWeKD5WGgoefPcTfe6HBjySa4Ab.

4. 로그인 시 입력하는 비밀번호와 맞는지 확인하기

class PasswordEncoderTest {
@Autowired
PasswordEncoder passwordEncoder;

public void passwordEncoder {
	String encodedPassword1 = passwordEncoder.encode("1234");
    String encodedPassword2 = passwordEncoder.encode("1234");

	System.out.println(encodedPassword1);
    System.out.println(encodedPassword2);
}

}

결과

$2a$10$VXIddKgmJdrrB0pGFE6kmuPEC2S/zdVqdczqbsY9jiEELW0W8xhoi

$2a$10$FC.QNUevmqhyHyBK7EdOWO3S0qbbULhNzBb7LIb8lCi/23jxl9Yzu

같은 비밀번호 1234를 암호화했지만 결과는 다르게 나오는 걸 확인할 수 있다.

그러면 저장해놓은 암호화한 비밀번호와 로그인 시 입력한 비밀번호를 어떻게 비교할 수 있을까?

PasswordEncoder의 matches() 함수를 쓰면 확인해볼 수 있다.

boolean matches(CharSequence rawPassword, String encodedPassword);

class PasswordEncoderTest {
	public void login(String inputPassword) {
    	String dbPassword = "$2a$10$u1uN2nOehZ9chk4VU4rTB.a4sbWeKD5WGgoefPcTfe6HBjySa4Ab.";
        
    	boolean matchResult = passwordEncoder.matches(inputPassword, dbPassword);
        
        System.out.println(matchResult); // 결과 : true
    }
 }

** dbPassword는 db에 저장되어 있는 비밀번호를 가져오면된다.



[출처]
https://kedric-me.tistory.com/entry/Spring-Password-Encoder-%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8-%EC%95%94%ED%98%B8%ED%99%94
https://velog.io/@hyeinisfree/SpringSecurity-PasswordEncoder

profile
끄적끄적 코딩공부

0개의 댓글