[Spring]BCryptPasswordEncoder

고지훈·2021년 12월 10일
1

Spring

목록 보기
3/26
post-thumbnail

BCryptPasswordEncoder

스프링 시큐리티 프레임워크에서 제공하는 클래스 중 하나로 비밀번호를 암호화하는데 사용할 수 있는 메서드를 가진 클래스이다.

스프링 시큐리티란 자바 서버 개발을 위해 필요로 한 인증, 권한 부여 및 기타 보안 기능을 제공하는 프레임워크(클래스와 인터페이스의 모임)이다.

  • BCryptPasswordEncoder는 BCrypt해싱 함수를 사용해서 비밀번호를 인코딩해주는 메서드와 사용자에 의해 제출된 비밀번호와 저장소에 저장되어 있는 비밀번호의 일치 여부를 확인해주는 메서드를 제공한다.
  • PasswordEncoder 인터페이스를 구현한 클래스이다.
  • 생성자의 인자 값(version, strength, SecureRandom instance)을 통해 해시의 강도를 조절할 수 있다.

BCryptPasswordEncoder는 비밀번호를 암호화할 수 있는 메서드를 제공한다. 웹 서비스에서 회원가입을 할 경우 비밀번호를 입력받은 문자열 그대로 저장하는 것이 아닌, 암호화를 거쳐 저장하게 된다. 암호화를 하는 이유는 제 3자가 데이터베이스에 접근하게 될 경우 비밀번호가 그대로 노출되는 것을 방지하기 위함이다.

BCryptPasswordEncoder의 메서드

encode(java.lang.CharSequence rawPassword)

  • 패스워드를 암호화해주는 메서드이다. encode메서드는 SHA-1, 8바이트로 결합된 해쉬, 랜덤으로 생성된 솔트값을 지원한다.
  • 매개변수는 java.lang.CharSequence타입의 데이터를 입력해주면 된다. => String, StringBuilder, StringBuffer
  • 반환 타입은 String이다.
  • 똑같은 비밀번호를 입력하더라도 다른 결과의 문자열을 반환한다.

matchers(java.lang.CharSequence rawPassword, java.lang.String encodePassword)

  • 화면으로부터 입력받은 패스워드와 인코딩 된 패스워드의 일치 여부를 확인한다.
  • 첫 번째 매개변수는 입력을 받은 패스워드를 두 번째 매개변수는 인코딩이 완료된 패스워드를 입력한다.
  • 참/거짓으로 결과 값을 반환한다.

upgradeEncoding(java.lang.String encodePassword)

  • 더 나은 보안을 위해 인코딩 된 암호를 다시 한번 더 인코딩해야 하는 경우 사용
  • 매개변수는 인코딩 필요 여부를 확인하고자 하는 인코딩 된 패스워드를 입력한다.
  • 반환 타입은 인코딩이 필요한 경우 참, 필요하지 않은 경우 거짓을 반환한다.
  • encode메서드를 통해 암호화된 패스워드의 경우 해당 메서드를 사용하게 되면 거짓을 반환하기 때문에, 오버라이딩하여 기준을 정한 후 암호화를 해야할지에 대한 여부를 판단하는 용도로 사용할 수 있다.
profile
"계획에 따르기보다 변화에 대응하기를"

0개의 댓글