해결된 질문
작성
·
760
1
비밀번호를 암호화하여 DB에 저장하고
같은 비밀번호를 암호화해도 다른 값이 저장되는데
로그인시 같은 비밀번호인지 어떻게 알 수 있나요???
답변 1
4
안녕하세요, 이도원입니다.
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"));
<결과>
감사합니다.