개발/자바 | Posted by 은우 아빠 2009. 2. 5. 09:47

주민등록 검사의 원리


출생 년도 (YY = 00 - 99 사이의 값) 
      +--+ 
      |   |    출생월 (MM = 01 - 12 사이의 값) 
      |   |    +--+ 
      |   |    |   |   출생일 (DD = 01 - 31 사이의 값) 
      |   |    |   |   +--+ 
      |   |    |   |   |   |       남,여 구분 (1, 3 = 남자, 2, 4 = 여자 )  
      |   |    |   |   |   |           | 
      Y   Y   M   M   D   D   -   X                                    C 
  +------------------------------------------------------------------+ 
  |   0   1   2    3    4   5         6   7   8   9   10  11         12    | index 
  |   6   6   0    5    1   0   -    1   3   2    1   6    1            1    | data 
  |   2   3   4    5    6   7         8   9   2    3   4    5          KEY  | mask 
  +------------------------------------------------------------------+ 
(11- {12+ 18+ 0+  25+ 6+  0+      8+  27+ 4+  3+  24+ 5}%11)% 10 == 1 

* 주민등록 번호 검사 비트 검사 방법 

     1) 주민등록 번호에 앞에서부터 2,3,4,5,6,7,8,9,2,3,4,5를 차례로 곱한다.  {0..11}%8+2 
     2) 각각의 값을 모두 더한다.                                                                  sum 
     3) 이 합을 11로 나눈다. 그러면 나머지는 0,1,2,3,4,5,6,7,8,9,10 중의 하나이다.    
     4) 11에서 나머지를 뺀다.                                               
     5) 이때 나머지 값이 10을 넘으면 10를 빼고,                                           (11-sum%11)%10 

          그렇지 않으면 나머지 값이 주민등록 검사 비트이다. 

  

예) 660510-1321611 

     6 * 2 + 6 * 3 + 0 * 4 + 5 * 5 + 1 * 6 + 0 * 7 + 1 * 8 + 3 * 9 + 2 * 2 + 1 * 3 + 6 * 4 + 1 * 5 = 132  : 합계 
     132 % 11        = 0   : 나머지값 
     (11 - 0) % 10  = 1  : 결과값 
     따라서 키 플래그는 1이다.      그리고 마지막 자리의 체크플래그는 1이다. 
      
     키플래그 == 체크플래그