외국인 주민번호에도 routine이 있다.

2007. 3. 1. 09:42일 이야기

외국인이 우리나라에 90일 이상 체류할 목적으로 들어오는 경우 법무부산하 출입국관리사무소에 외국인등록을 하여야 합니다.
이때 부여되는 등록번호를 외국인등록번호라 하는데, 우리나라 국민의 주민등록번호와는 자릿수는 같지만 생성체계가 약간 틀립니다.

외국인등록번호 체계는 다음과 같습니다.
000000-1234567

앞의 6자리는 물론 생년월일입니다.
뒷자리는
1 : 성별구분
23 : 등록기관번호
45 : 일련번호
6 : 등록자 구분
7 : 검증번호

하나씩 설명하자면 외국인의 성별구분은
1900년대 출생자인 경우 남자는 5, 여자는 6,
2000년대 출생자인 경우 남자는 7, 여자는 8입니다.

등록기관번호는 외국인등록기관(출입국관리사무소)의 고유번호입니다.
일련번호는 등록당시 등록순서에 따라 순차적으로 부여됩니다.

등록자 구분은
- 외국인(순수외국인)은 9,
- 재외국민(이민을 간 우리나라사람중 국적이 한국인 사람)은 8,
- 외국국적동포(이민가서 국적까지 취득한 사람)은 7입니다.

검증번호는 체계에 맞는지 확인하는 번호입니다.

주민등록번호도 제일 마지막자리는 검증번호죠..

//외국인 번호 체크----------
function isRegNo_fgnno(fgnno) {
        var sum=0;
        var odd=0;
        buf = new Array(13);
        for(i=0; i<13; i++) { buf[i]=parseInt(fgnno.charAt(i)); }
        odd = buf[7]*10 + buf[8];
        if(odd%2 != 0) { return false; }
        if( (buf[11]!=6) && (buf[11]!=7) && (buf[11]!=8) && (buf[11]!=9) ) {
                return false;
        }
        multipliers = [2,3,4,5,6,7,8,9,2,3,4,5];
        for(i=0, sum=0; i<12; i++) { sum += (buf[i] *= multipliers[i]); }
        sum = 11 - (sum%11);
        if(sum >= 10) { sum -= 10; }
        sum += 2;
        if(sum >= 10) { sum -= 10; }
        if(sum != buf[12]) { return false }
        return true;
}