/** * XXXXXX - XXXXXXX 형식의 외국인등록번호 앞, 뒤 문자열 2개 입력 받아 유효한 외국인등록번호인지 검사. * * @param 6자리 외국인등록앞번호 문자열 , 7자리 외국인등록뒷번호 문자열 * @return 유효한 외국인등록번호인지 여부 (True/False) */ public static boolean checkforeignNumber(String foreign1, String foreign2) { EgovDateUtil egovDateUtil = new EgovDateUtil(); String foreignNumber = foreign1 + foreign2; int check = 0; if (foreignNumber.length() != 13) // 외국인등록번호의 길이가 맞는지 확인한다. return false; for (int i = 0; i < 13; i++) { if (foreignNumber.charAt(i) < '0' || foreignNumber.charAt(i) > '9') // 숫자가 아닌 값이 들어왔는지를 확인한다. return false; } if (Character.getNumericValue(foreignNumber.charAt(0)) == 0 || Character.getNumericValue(foreignNumber.charAt(0)) == 1) { if (Character.getNumericValue(foreignNumber.charAt(6)) == 5 && Character.getNumericValue(foreignNumber.charAt(6)) == 6) return false; String temp = "20" + foreignNumber.substring(0, 6); if (!egovDateUtil.checkDate(temp)) return false; } else { if (Character.getNumericValue(foreignNumber.charAt(6)) == 5 && Character.getNumericValue(foreignNumber.charAt(6)) == 6) return false; String temp = "19" + foreignNumber.substring(0, 6); if (!egovDateUtil.checkDate(temp)) return false; } // 외국인등록번호 앞자리 날짜유효성체크 & 성별구분 숫자 체크 for (int i = 0; i < 12; i++) { check += ((9 - i % 8) * Character.getNumericValue(foreignNumber.charAt(i))); } if (check % 11 == 0) { check = 1; } else if (check % 11 == 10) { check = 0; } else check = check % 11; if (check + 2 > 9) { check = check + 2 - 10; } else check = check + 2; // 검증식을 통합 값의 도출 if (check == Character.getNumericValue(foreignNumber.charAt(12))) // 마지막 유효숫자와 검증식을 통한 값의 비교 return true; else return false; }
/** * XXXXXX - XXXXXXX 형식의 주민번호 앞, 뒤 문자열 2개 입력 받아 유효한 주민번호인지 검사. * * @param 6자리 주민앞번호 문자열 , 7자리 주민뒷번호 문자열 * @return 유효한 주민번호인지 여부 (True/False) */ public static boolean checkJuminNumber(String jumin1, String jumin2) { EgovDateUtil egovDateUtil = new EgovDateUtil(); String juminNumber = jumin1 + jumin2; String IDAdd = "234567892345"; // 주민등록번호에 가산할 값 int count_num = 0; int add_num = 0; int total_id = 0; // 검증을 위한 변수선언 if (juminNumber.length() != 13) return false; // 주민등록번호 자리수가 맞는가를 확인 for (int i = 0; i < 12; i++) { if (juminNumber.charAt(i) < '0' || juminNumber.charAt(i) > '9') return false; // 숫자가 아닌 값이 들어왔는지를 확인 count_num = Character.getNumericValue(juminNumber.charAt(i)); add_num = Character.getNumericValue(IDAdd.charAt(i)); total_id += count_num * add_num; // 유효자리 검증식을 적용 } if (Character.getNumericValue(juminNumber.charAt(0)) == 0 || Character.getNumericValue(juminNumber.charAt(0)) == 1) { if (Character.getNumericValue(juminNumber.charAt(6)) > 4) return false; String temp = "20" + juminNumber.substring(0, 6); if (!egovDateUtil.checkDate(temp)) return false; } else { if (Character.getNumericValue(juminNumber.charAt(6)) > 2) return false; String temp = "19" + juminNumber.substring(0, 6); if (!egovDateUtil.checkDate(temp)) return false; } // 주민번호 앞자리 날짜유효성체크 & 성별구분 숫자 체크 if (Character.getNumericValue(juminNumber.charAt(12)) == (11 - (total_id % 11)) % 10) // 마지막 유효숫자와 검증식을 통한 값의 비교 return true; else return false; }