WOONO's Blog





주민번호 111111-1111111 에 대한 기사를 보고  (기사원문 : http://www.nocutnews.co.kr/Show.asp?IDX=1970751)

기자의 본문중  

"로또식 배분, 마지막 2자리는(12, 13번째 자리값) 관할관청에서 철저한 보안속에 무작위로 정해진다"  

 라는 전혀 근거 없는 글이 나를 자극시켜서 호기심에 계산을 해보았다.

내가 알기론 12번째는 같은날 같은 지역에서 태어난 사람들의 주민번호 신고순서이고 

13번째는 주민번호가 정상적인지 검출하기 위한 패러티값이다.

일단, 기사는 기사고 주민번호 111111-1111111 이 가능한지 

예전에 수표조회랑 상품권조회 각종 신용 카드 및 체크 카드조회등 프로그램을 개발한적이 있어 옛기억을 떠올리며 계산해보았다. 

아래는 주민번호 13번째 자리 검출하는 방법 이다.
 
검사를 하기 위해서는 검증코드와 키가 필요한데 불변이니 걱정 안해도 된다.
 
----------------------------------------------------------------------------
1 1 1 1 1 1 1 1 1 1 1 1 X <- 주민번호 각자리
2 3 4 5 6 7 8 9 2 3 4 5    <- 검증코드(불변)
----------------------------------------------------------------------------
X = 패러티 값(13번째 자리수)


검사하는 방법

1. (주민번호 첫번째자리 x 검증코드 첫번째 자리)+(주민번호 두번째자리 x 검증코드 2번째자리) + .....

☞ (2*1) +(3*1) +(4*1) +(5*1) +(6*1) +(7*1) +(8*1) +(9*1) +(2*1) +(3*1) +(4*1) +(5*1)
= 2+3+4+5+6+7+8+9+2+3+4+5 = 58

2. 나온 결과값 58을 키값 11(불변)로 나눈다

☞ 64(결과값) / 11(불변) = 5.2727272727272727..........

몫 : 5
나머지 : 0.2727272727272727..........

※ 몫은 버리고 나머지 소수점 첫번째 자리 2를 가지고 계산을 계속한다.

3. 몫은 버리고 나머지에서 소수점 앞자리 첫번째 값 2를 키 값11(불변) 에서 빼준다.

☞ 11(불변) - 2(소수점 첫번째자리) = 9

즉, 결론은  주민번호 111111-1111111 는 불가능하고 12번째 자리까지 우연치 않게 1이 전부 나왔다고 쳐도 111111-1111119 가 될 수 밖에 없다.


Posted by woono