로그인한 회원의  안전한 정보변경을 위해 비밀번호를 재인증받아보자!! 

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

/**
* 암호화된 비밀번호 일치 여부
* 사용예) 
* 비번 : text123
* a: $qweqsd$awe.113212wqedasdqweqdqwdadwqwe ( DB에서 가져온 암호화된 비밀번호) 
* b: text123 
* @param a : DB에서 가져온 암호화된 비밀번호 
* @param b : 사용자가 입력한 비밀번호 (암호화 전) 
* @return 일치여부 
*/
public static boolean cryptMatch(String a, String b) {
	BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
	return encoder.matches(a, b);
}

 

BCryptPasswordEncoder 는 
BCrypt 라는 해시 함수를 사용한 구현체이다. 단순히 해시를 하는것 뿐만 아니라 Salt 를 넣는 작업까지 하므로, 입력값이 같음에도 불구하고 매번 다른 encoded된 값을 return 해주게 된다.

그러므로 문자열 비교에 사용되는 equals() 함수가아닌 matches 함수를 사용하는것이 적절하다. 

 

주의!! 

코드에 적힌바와 같이 파라메터 두개 모두 암호화된 상태가 아닌 "b" 는 사용자가 입력한 데이터 그대로 

입력해야한다.  

 

+ Recent posts