안전한 해시 기술 : 일반적으로 안전한 해시 기술로 알려저 있는데 비밀번호를 안전하게 보호하기 위해 설계되었으며, 잘 구현된 경우에는 보안 상의 위협으로 부터 보호 가능
솔트 기능 : 각 비밀번호에 대해 무작위 솔트 값을 사용하여 해시를 생성하여 레인보우 테이블 공격과 같은 공격으로부터 보호 가능
조작 가능한 성능 : : BCrypt는 매우 복잡한 알고리즘으로, 시간이 오래 걸리는데 이는 공격자가 해시를 빠르게 크래킹하는 것을 방지하고 비용 인자를 조정하여 성능을 조정할 수 있습니다.
래덤 솔트 값과 해시 조합 : 솔트 값과 해시 결과에 함께 저장하여, 별도의 저장 공간 없이 솔트 값을 추적 가능
BCryptPasswordEncoder: 스프링 시큐리티에서 제공하는 BCryptPasswordEncoder는 비밀번호를 해시화하는 데 사용된다. 주요 메서드는 encode()와 matches()입니다. encode()는 주어진 비밀번호를 해시화하여 반환하고, matches()는 주어진 비밀번호와 해시된 비밀번호가 일치하는지 확인한다
@Bean: 스프링에서 사용되는 어노테이션으로, 해당 메서드가 스프링 컨텍스트에 빈으로 등록되어야 함을 나타낸다
PasswordEncoder: 스프링 시큐리티에서 제공하는 인터페이스로, 다양한 알고리즘을 사용하여 비밀번호를 해시화할 수 있고 BCryptPasswordEncoder는 PasswordEncoder 인터페이스를 구현한 클래스 중 하나이다