강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

별천랑님의 프로필 이미지
별천랑

작성한 질문수

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Users Microservice - 기능 추가

BCryptPasswordEncoder 로그인

해결된 질문

작성

·

760

1

비밀번호를 암호화하여  DB에 저장하고

같은 비밀번호를 암호화해도 다른 값이 저장되는데

로그인시 같은 비밀번호인지 어떻게 알 수 있나요???

답변 1

4

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

안녕하세요, 이도원입니다. 

BCryptPasswordEncoder는 BCrypt 해싱 함수(Bcrypt Hashing Function)를 사용해서 데이터를 암호화하는 클래스입니다. Bcrypt는 데이터(주로 패스워드)를 해싱할 때 내부적으로 랜덤한 솔트를 생성하기 때문에 같은 문자열에 대해서도 다른 결과를 생성해 냅니다. 같은 데이터를 암호화 하였을 때, 매번 같은 데이터가 발생하면, 누구나 쉽게 데이터를 복호화 할 수도 있을 겁니다. 

다음은 BCryptPasswordEncoder 이용해서 5개의 암호화 된 데이터를 생성하는 코드와, 이전에 생성되었던 키를 원본 문자와 비교하는 코드입니다. 참고하세요.

BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();

int i = 0;
while (i < 5) {
String password = "123456";
String hashedPassword = passwordEncoder.encode(password);
System.out.println(hashedPassword);
i++;
}

System.out.println(passwordEncoder.matches("123456",
"$2a$10$GHI5DSLoScy6mBu2uFm0PeJkiN0W5fnsknM/ja7EAhxexTqqO4QTq"));
System.out.println(passwordEncoder.matches("123456",
"$2a$10$pKsi9//8s.w20E4e3p3ZqeyC7kOsZHqrYvDRg0auQb0BxmTqH0yzm"));
System.out.println(passwordEncoder.matches("123456",
"$2a$10$xu.8LmuYK2WBt2fpUXc3Q.tsiCtEhSDB7essMDXFCcNCOwrHIbBie"));

<결과>

감사합니다. 

별천랑님의 프로필 이미지
별천랑

작성한 질문수

질문하기