본문 바로가기
SPRING

[SPRING SECURITY] BCryptPasswordEncoder 비밀번호 암호화

by madinthe90 2022. 2. 4.
반응형

 

테스트 환경: 전자정부프레임워크 3.7 / SPRING 4.2.4

 

1. pom.xml 에 spring security dependency 추가

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-web</artifactId>
    <version>4.2.3.RELEASE</version>
</dependency>
          
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-core</artifactId>
    <version>4.2.3.RELEASE</version>
</dependency>
          
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
    <version>4.2.3.RELEASE</version>
</dependency>

 

2. 암호화를 위해 context.xml 에 bean 객체 생성

<bean id="encoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder" />

 

3. @Autowired BCryptPasswordEncoder

@Autowired
BCryptPasswordEncoder passwordEncoder;

 

4. 테스트

* BCryptPasswordEncoder 사용 메소드

- encode

패스워드 암호화.

같은 비밀번호를 인코딩해도 매번 다르게 인코딩 된 문자열 반환(반환 타입은 String)

 

- matches

인코딩되지 않은 패스워드와 인코딩된 패스워드 일치 여부 확인

사용시 matches(인코딩되지 않은 패스워드, 인코딩된 패스워드) 입력하며 반환 타입은 boolean 

String testPw = "a123123123!"; //인코딩 전 비밀번호
String encoderPw1 = passwordEncoder.encode(testPw); //인코딩 된 비밀번호
String encoderPw2 = passwordEncoder.encode(testPw); // 같은 인코딩 값이 나오는지 확인하기 위함

//인코딩된 비밀번호 출력
System.out.println("== Password Encoder1 : " + encoderPw1);
System.out.println("== Password Encoder2 : " + encoderPw2);
		
String truePw = "a123123123!";
String falsePw = "asdasd";

//인코딩된 비밀번호와 matches()
System.out.println("== True Password Encoder1: " + passwordEncoder.matches(truePw, encoderPw1));
System.out.println("== False Password Encoder1 : " + passwordEncoder.matches(falsePw, encoderPw1));
System.out.println("== True Password Encoder2: " + passwordEncoder.matches(truePw, encoderPw2));
System.out.println("== False Password Encoder2 : " + passwordEncoder.matches(falsePw, encoderPw2));

 

5. 결과 console

== Password Encoder1 : $2a$10$cj5pT/Umi0hCS1x/NLEPCedLyV/wMHB2x78rGVCNqIkOnzMXgv6Ee
== Password Encoder2 : $2a$10$FuMsn7TlOgBacuY.19x8yuRgWR48hPhNEqcGMUgdY97lDVifqtuBC
== True Password Encoder1: true
== False Password Encoder1 : false
== True Password Encoder2: true
== False Password Encoder2 : false
반응형

댓글