안녕하세요 상훈입니다.
자바 (Java) 에서 비밀번호를 검증하는 공통코드를 작성하려고 합니다.
비밀번호 정책에 따른 비밀번호 검증
[ 영문대문자, 영문소문자, 숫자, 특수문자 ] 4종류 조합으로 생성하도록 한다.
ㄴ 2종류 조합시 10자리 이상, 3종류 조합시 8자리 이상으로 한다.
//패턴
private static final String PATTERN_SPECIAL_CHAR = "[!@#$%^&*()+=-]";
private static final String[] PSWD_COMBI_PATTERNS = {"[0-9]", "[a-z]", "[A-Z]", PATTERN_SPECIAL_CHAR};
//길이
private static final int PWSD_COMBI_2_MIN_LENGTH = 10;
private static final int PWSD_COMBI_3_MIN_LENGTH = 8;
/**
* @param pswd 입력한 비밀번호
* @return 검증 여부 (성공: true, 실패: false)
*/
private static boolean isValidByPasswordPolicy(@NonNull final String pswd) {
int matchCnt = 0;
for (String iter : PSWD_COMBI_PATTERNS) {
Pattern pattern = Pattern.compile(iter);
Matcher matcher = pattern.matcher(pswd);
if (matcher.find()) {
matchCnt++;
}
}
if (matchCnt == 2 && PWSD_COMBI_2_MIN_LENGTH <= StringUtils.length(pswd)) {
return true;
} else if (matchCnt >= 3 && PWSD_COMBI_3_MIN_LENGTH <= StringUtils.length(pswd)) {
return true;
}
return false;
}
이상입니다.
여유롭게 커피 한 잔 사주시면 감사합니다~
댓글 영역