Backend/Java

Spring - security crypto

개발자의 첫 걸음 2025. 12. 25. 10:00

안녕하세요. 오늘은 비밀번호 암호화 처리(security-crypto)에 대해 알아볼게요

 

 

security crypto

 

security crypto는 비밀번호 같은 민감한 데이터를 안전하게 처리하기 위한 암호화 도구 모음이에요.

 

상세하게 설명한다면

 

Spring Security Crypto 모듈의 BCryptPasswordEncoder를 활용하여

 

비밀번호를 안전하게 암호화하여 저장하도록 구현했어요.

 

사용자가 입력한 평문 비밀번호는 BCrypt 알고리즘으로 해싱되어 데이터베이스에 저장되며,

 

로그인 시에는 암호화된 비밀번호와 평문 비밀번호를 안전하게 비교해요.

 

 

※ 주요 단어 해석하기

 

해시값, 해싱(Hash Value) : 원본 데이터를 알아볼 수 없게 으깨어 만든 문자열 (Ex. 믹서기)

 

평문: 1234 → 해시값: #!1shfg@1

 

해시값 목적: 해커가 DB를 털어가도 비밀번호를 알 수 없음.

 

단방향 알고리즘: 한 번 으깨면 다시 돌릴 수 없음

양방향 알고리즘: 한 번 으깨면 다시 복원할 수 있음

 

매치스 메서드(matches): 비교해서 true / false 반환

 

 

security crypto 사용방법

 

의존성을 주입이 기본적으로 설정이에요.

implementation 'org.springframework.security:spring-security-crypto'

의존성 주입으로 Spring Security의 암호화 모듈을 추가하고,

 

Spring Security 전체를 쓰지 않아도 암호화 기능만 사용 가능해요.

 

즉, 로그인/권한 없이, 비밀번호 암호화만 쓰고 싶을 때 사용해요.

 

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
    
    // 대표 구현체
    BCryptPasswordEncoder
    
    // 적용 예시
    import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
    import org.springframework.security.crypto.password.PasswordEncoder;

    PasswordEncoder encoder = new BCryptPasswordEncoder();

    String rawPassword = "1234";
    String encodedPassword = encoder.encode(rawPassword);

    System.out.println(encodedPassword);
    
    // 출력 결과(예)
    $2a$10$e0NRQ9ZP0y6RZz...

이렇게 한다면 같은 비밀번호라도 매번 결과가 달라요.

 

 

비밀번호 비교(로그인)

String inputPassword = "1234";
String dbPassword = encodedPassword; // DB에 저장된 값

boolean matches = encoder.matches(inputPassword, dbPassword);

System.out.println(matches); // true or false

 

 

 

security crypto에 대한 간단한 요약표예요.

기능 설명
비밀번호 해시 BCrypt, SCrypt 등
비밀번호 비교 matches()
간단한 암/복호화 TextEncryptor (덜 자주 씀)
Spring Security 없이 사용 가능

 

 

 

여기까지 security crypto에 대해 알아봤는데요.

 

단순한 보안 라이브러리가 아니라,


비밀번호를 안전하게 저장하고 검증하기 위한 최소한의 보안 도구라는 것을 알게 되었어요.

'Backend > Java' 카테고리의 다른 글

이메일 중복방지  (0) 2025.12.31
회원가입 이메일 인증 기능 (Google smtp 활용)  (0) 2025.12.29
Spring - RestTemplate  (0) 2025.12.23
Spring - OSIV  (0) 2025.12.18
Spring - interceptor  (1) 2025.12.16