Пример #1
0
  /**
   * 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;
  }
Пример #2
0
  /**
   * 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;
  }