관리 메뉴

드럼치는 프로그래머

[C/C++] 주민등록번호 각 자리별 의미와 생성규칙 본문

★─Programing/☆─C | C++

[C/C++] 주민등록번호 각 자리별 의미와 생성규칙

드럼치는한동이 2008. 5. 16. 03:50
사용자 삽입 이미지

주민등록번호 각 자리별 의미

주민등록번호는 위 사진과 같은 의미를 가지고 있다.
위 사진에는 나와있지 않는 성별에 대한 추가 정보입니다.

   성별

연도

1

1900년대생 남자

2

1900년대생 여자

3

2000년대생 남자

4

2000년대생 여자

5

1900년대생 남자 외국인 남자 재외동포)

6

1900년대생 여자 외국인(여자 재외동포)

7

2000년대생 남자 외국인(남자 재외동포)

8

2000년대생 여자 외국인(여자 재외동포)

9

1800년대생 남자

0

1800년대생 여자


마지막 오류검증번호는 앞에 12자리를 이용하여 생성이 된다.
그 공식은 아래와 같다.
사용자 삽입 이미지


예를들어 주민번호 7 8 0 9 2 5 - 1 3 2 4 0 1 1는 데시를 기준으로, 앞에는 6자리 다음은 7자리입니다.
여기서 뒤의 7자리중 제일끝에 있는 수가 중요한 수 입니다. 이를 검증코드라고합니다.
이 앞의 12자리수는 검증코드와 관련되어있는 규칙이 있습니다. 그 규칙은 아래와 같습니다.
주미등록번호 총 13자리 중 제일 마지막 자리수를 제외하고 순서대로 2 3 4 5 6 7 8 9 2 3 4 5의 배열 중 대응되는 숫자끼리 곱한수를 전부 더한 후 11로 나누어, 나머지를 구한후 11에서 뺀 나머지의 1의자리를 검증코드 라고 합니다.
즉, 위의 예를 들은 주민번호를 이용하여 계산해보면
2*7 + 3*8 + 4*0 + 5*9 + 6*2 + 7*5 + 8*1 + 9*3 + 2*2 + 3*4 +4*0 + 5*1
=186
186 / 11 = 16(몫) ----- 10(나머지)
11 - 10(나머지) = 1 (검증코드)
7 8 0 9 2 5 - 1 3 2 4 0 1 X 에서 X=1 라는 것입니다.


그러므로 13자리 중 12자리만 안다고 하더라도 빠진 자릿수를 알게된다면 해결된다는 얘기!


Comments