728x90
- Spring Security 의존성을 추가 해야만 PasswordEncoder 제공
- PasswordEncoder의 구현체인 BCryptPasswordEncoder은 Hashing(해싱) 방식을 사용하여 복호화가 불가능한 단방향 방식
- 비밀번호는 노출이 되어서는 안 되기 때문에 암호화를 시키고 복호화를 할 필요가 없이, 사용자가 입력한 비밀번호가 맞는지만 검증하면 되기 때문에 BCryptPasswordEncoder를 사용
BCryptPasswordEncoder 사용 이유?
- 강력한 해시 알고리즘
- BCrypt는 해시 계산이 느리기 때문에 공격자가 무작위 대입 공격(Brute-force attack)을 시도하는 데 시간이 더 많이 소요
- Salt 자동 생성
- BCrypt는 내부적으로 랜덤한 salt 값을 생성하여 해싱 과정에 포함
- 이로 인해 동일한 비밀번호라도 해시 결과가 달라지므로 보안이 강화

- 조정 가능한 작업 비용
- BCrypt는 작업 비용을 조정할 수 있어 하드웨어 성능에 따라 해시 계산 난이도를 조절 가능
암호화(Encode)
- PasswordEncoder.encode(CharSequence rawPassword)
- rawPassword를 인코딩하여 암호화
비교(Matches)
- PasswordEncoder.matches(CharSequence rawPassword, String encodePassword)
- rawPassword와 encodePassword를 비교
- BCryptPasswordEncoder는 랜덤한 salt 값을 해싱 과정에 포함하여 encode할 때마다 매번 다른 해시 결과가 나오기 때문에 두 개가 동일한 지 비교하기 위해서는 matches() 메서드를 사용
728x90
'Language > Spring Security' 카테고리의 다른 글
| Redis를 활용한 이중화 설정 - @EnableRedisHttpSession (0) | 2024.08.03 |
|---|---|
| Custom DSLs - HttpSecurity.with(AbstractHttpConfigurer) (0) | 2024.08.03 |
| 다중 보안 설정 (0) | 2024.08.03 |
| Spring MVC 비동기 통합 - WebAsyncManagerIntergrationFilter (0) | 2024.08.03 |
| Spring MVC 통합 - @AuthenticationPrincipal (0) | 2024.08.03 |