티스토리 뷰

서버/Spring

[Spring] 데이터 암호화

sm.jeon 2024. 3. 13. 01:17
반응형

단방향, 양방향 암호화

단방향 암호화: 복호화가 불가능한 암호화

양방향 암호화: 복호화가 가능한 암호화

단방향 암호화가 보안관점에서 더 좋지만, 예를 들어 비밀번호 찾기가 불가능하다는 단점이 있다. (비밀번호 재설정하는 방식으로 대체 가능)

 

Spring Security가 제공하는 BCrypt 알고리즘을 이용해 단방향 암호화를 하는 예시를 참고할 것이다.

Spring Security 의존성 추가

implementation ("org.springframework.boot:spring-boot-starter-security")

 

Config 설정

@Configuration
@EnableWebSecurity
class SecurityConfig {

    @Bean
    fun passwordEncoder() = BCryptPasswordEncoder()

    @Bean
    fun securityFilterChain(httpSecurity: HttpSecurity): SecurityFilterChain {
        return httpSecurity.csrf(Customizer { it.disable() }).build()
    }
}

 

securityFilterChain 메서드는, Spring Security를 사용하면 모든 API에 접근 권한을 확인하는데, (자체적인 로그인이 구현되고, 모든 API 호출 시 로그인이 필요한 것으로 보인다. 자세한 건 Spring Security를 더 공부해야 할 거 같다.)

일단 이 기능을 끄기 위한 설정이다.

 

이제, BCryptPasswordEncoder를 주입받아 사용하면 된다.

 

데이터 암호화 / 동등성 확인

PasswordEncoder의 encode 함수를 사용해 데이터를 암호화할 수 있고,

matches 함수를 사용해 암호화 전 값을 암호화된 값과 대조할 수 있다.

class Example @Autowired constructor (
	private val encoder: BCryptPasswordEncoder
) {
	fun encode(password: String) = encoder.encode(password) // String 반환
    
	fun isEqual(password: String, encodedPassword: String) = encoder.matches(password, encodedPassword) // Boolean 반환
}
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함