일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- codeigniter
- php
- css
- Stock
- IPO
- 맥
- html
- MYSQL
- 오라클
- 코드이그나이터
- SQL
- 주식 청약
- 자바
- Oracle
- JavaScript
- 6월 공모주 청약 일정
- 공모주 청약
- jquery
- 자바스크립트
- 공모주 청약 일정
- 리눅스
- 주식 청약 일정
- java
- 공모주
- Eclipse
- 7월 공모주 청약 일정
- 제이쿼리
- 주식
- linux
- Stock ipo
- Today
- Total
개발자의 끄적끄적
[java] 비밀번호 패턴(동일 문자, 연속 문자, 특수문자, 숫자, 영문) 체크[펌] 본문
[java] 비밀번호 패턴(동일 문자, 연속 문자, 특수문자, 숫자, 영문) 체크[펌]
/**
* 비밀번호 정규식 패턴
* @author ohj
*
*/
public class RegularExpression {
public static final String pattern1 = "^(?=.*[A-Za-z])(?=.*[0-9])(?=.*[$@$!%*#?&])[A-Za-z[0-9]$@$!%*#?&]{8,20}$"; // 영문, 숫자, 특수문자
public static final String pattern2 = "^[A-Za-z[0-9]]{10,20}$"; // 영문, 숫자
public static final String pattern3 = "^[[0-9]$@$!%*#?&]{10,20}$"; //영문, 특수문자
public static final String pattern4 = "^[[A-Za-z]$@$!%*#?&]{10,20}$"; // 특수문자, 숫자
public static final String pattern5 = "(\\w)\\1\\1\\1"; // 같은 문자, 숫자
Matcher match;
/**
* 비밀번호 정규식 체크
* @param pwd
* @return
*/
public boolean pwdRegularExpressionChk(String newPwd, String oldPwd, String userId) {
boolean chk = false;
// 특수문자, 영문, 숫자 조합 (8~10 자리)
match = Pattern.compile(pattern1).matcher(newPwd);
if(match.find()) {
chk = true;
}
// 영문, 숫자 (10~20 자리)
match = Pattern.compile(pattern2).matcher(newPwd);
if(match.find()) {
chk = true;
}
// 영문, 특수문자 (10~20 자리)
match = Pattern.compile(pattern3).matcher(newPwd);
if(match.find()) {
chk = true;
}
// 특수문자, 숫자 (10~20 자리)
match = Pattern.compile(pattern4).matcher(newPwd);
if(match.find()) {
chk = true;
}
if(chk) {
// 연속문자 4자리
if(samePwd(newPwd)) {
return false;
}
// 같은문자 4자리
if(continuousPwd(newPwd)) {
return false;
}
// 이전 아이디 4자리
if(newPwd.equals(oldPwd)) {
return false;
}
// 아이디와 동일 문자 4자리
if(sameId(newPwd, userId)) {
return false;
}
}
return true;
}
/**
* 같은 문자, 숫자 4자리 체크
* @param pwd
* @return
*/
public boolean samePwd(String pwd) {
match = Pattern.compile(pattern5).matcher(pwd);
return match.find() ? true : false;
}
/**
* 연속 문자, 숫자 4자리 체크
* @param pwd
* @return
*/
public boolean continuousPwd(String pwd) {
int o = 0;
int d = 0;
int p = 0;
int n = 0;
int limit = 4;
for(int i=0; i<pwd.length(); i++) {
char tempVal = pwd.charAt(i);
if(i > 0 && (p = o - tempVal) > -2 && (n = p == d ? n + 1 :0) > limit -3) {
return true;
}
d = p;
o = tempVal;
}
return false;
}
/**
* 아이디와 동일 문자 4자리 체크
* @param pwd
* @param id
* @return
*/
public boolean sameId(String pwd, String id) {
for(int i=0; i<pwd.length()-3; i++) {
if(id.contains(pwd.substring(i, i+4))) {
return true;
}
}
return false;
}
}
'개발 > java & jsp' 카테고리의 다른 글
[java] eclipse Could not create the Java virtual machine 에러 해결방법 (0) | 2020.02.25 |
---|---|
[java] 자바(java)에서 SAP 연계하여 데이터 조회 [펌] (0) | 2020.02.06 |
[java & spring] jsch 이용해서 sftp 파일 업로드 예제(인증서 체크 무시)[펌] (0) | 2020.01.22 |
[spring] SPRING을 이용한 SFTP 파일 업로드[펌] (0) | 2020.01.22 |
[JAVA] 자바 MYSQL 삽입,삭제,수정,검색 [펌] (0) | 2020.01.11 |