스프링 부트 암호화

스프링 시큐리티를 이용하여 문자열을 암호화하고 복호화 하는 방법을 포스팅 하려고 한다.

		<dependency>
		<groupId>org.springframework.security</groupId>
		<artifactId>spring-security-config</artifactId>
		</dependency>

우선 스프링 프로젝트에서 pom.xml에 다음과 같이 추가한다.

그 다음 config 파일을 생성하여 BCryptPasswordEncoder 빈 객체를 생성시켜줘야 한다.

필자는 com.hu.ht.myhf.config 패키지를 만들고 SomeConfig 라는 클래스를 만들었다.

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

@Configuration
public class SomeConfig {
	@Bean
    public BCryptPasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder(12);
    }
}

다음과 같이SomeConfig 를 생성하였다면 암호화를 사용할 서비스 및 컨트롤러 클래스로 이동한다.

@Autowired
BCryptPasswordEncoder passwordEncoder;

암호화를 사용할 서비스 또는 컨트롤러 클래스에 다음과 같이 선언한다.

user.setPassword(passwordEncoder.encode(user.getPassword()));

암호화 사용법은 다음과 같으며 passwordEncoder.encode(평문 문자열) 형식으로 사용하면 된다. 이때 salt는 넣어줄 필요 없이 암호화 하는 시점에 랜덤하게 생성되어 salt 기능을 수행 한다.

if( passwordEncoder.matches(password, user.getPassword()) ) {
  //참
}

복호화 사용법은 다음과 같으며 첫번째 인자에는 평문 데이터, 두번째 인자에는 암호화된 문자열을 넣어준다음 검증을 거치면 된다.