728x90
반응형
비밀번호 조건
1. 0~9까지 숫자가 최소 1개 이상이면서 영문대소문자 최소 1개 이상 포함, 특수문자 최소 1개 이상 포함되어
공백이 없고 9~20자리
2. 연속된 숫자 4자리, 동일 문자 4자리 검증
//패스워드 검증
if (checkPw(newPwd) == false){
map.put("message", "비밀번호는 공백 없는 영문 대소문자, 특수문자, 숫자를 포함한 9~20자리 암호로 설정해주세요.");
map.put("resultData", false);
return map;
}
//연속된 숫자, 문자 4자리 검증
if ( continuousPw(newPwd) ) { //트루면 연속된 숫자 또는 문자열이 있음
map.put("message", "비밀번호에 연속된 숫자 또는 문자열이 존재합니다.");
map.put("resultData", false);
return map;
}
1. 패스워드 검증
- 입력된 패스워드 null체크
- 자리수가 20자리가 넘는지 체크
- 정규식
+ (?=.*[0-9]) 0~9까지 숫자 최소 한개
+ (?=.*[a-zA-Z]) 영문 대소문자 최소 한개
+ (?=.*\\W) 특수문자 최소 한개
+ (?=.\\S+$) 공백 불가
+ .{9,20} 선행 4가지 표현식(숫자, 영문대소문자, 특수문자, 공백불가)에 맞는 9~20자리 문자열
+ (?=.*?[#?!@$%^&*-]) 등록가능한 특수문자
- checkPw 값이 트루면 통과 false면 얼럿표출
//패스워드 검증
private boolean checkPw(String inputPw) {
if(inputPw == null || inputPw.equals("")) {
return false;
}
if (inputPw.length() > 20) {
return false;
}
boolean checked = false;
try {
String regExp = "^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*\\W)(?=.\\S+$).{9,20}$";
checked = inputPw.matches(regExp);
}catch (Exception e) {
return false;
}
return checked;
}
2. 연속된 숫자, 문자 4자리 검증 - 패스워드를 한자리씩 잘라 포문으로 연속된 숫자나 문자가 있는지 확인
없으면 true 있으면 false
//연속된 문자 숫자4자리가 포함되어있는지 검증
private boolean continuousPw(String inputPw) {
int o = 0;
int d = 0;
int p = 0;
int n = 0;
int limit = 4;
for (int i = 0; i < inputPw.length(); i++ ) {
char tmpVal = inputPw.charAt(i);
if (i > 0 && (p = o - tmpVal) > -2 && (n = p == d ? n + 1 : 0 ) > limit - 3 ) {
return true;
}
d = p;
o = tmpVal;
}
return false;
}
728x90
반응형
'개발 > JAVA' 카테고리의 다른 글
[JAVA/Spring] LoginInterceptor 로그인 인터셉터 (0) | 2021.07.02 |
---|---|
MyBatis 카멜 자동변환(바로) (0) | 2021.05.17 |
IBatis 카멜 자동변환(바로) (2) | 2021.05.17 |
스네이크 케이스 카멜 케이스로 자동변환(바로) (0) | 2021.05.14 |
Java에서 Jsp로 alert창 전달 (1) | 2021.05.11 |
댓글