ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 주민등록번호 검증(검사) 소스
    Programming/C,C++,C# 2007. 12. 18. 00:18

    주민등록번호는 13자리로 구성이 되어 있습니다.
    123456 - 1234567

    위와 같이 앞자리 6자리는 생년월일 이고
    뒷자리 첫번째는 성별입니다. ( 홀수는 남성, 짝수는 여성 )

    그리고 2번째부터 5번째 4개의 숫자는 자신이 태어난 지역코드인데 이것은 현재 보안상비밀이라고합니다.

    그리고 6번째는 자신이 태어난 날 해당지역에서 몇번째로 태어났는지, 즉 해당지역에서 그날 몇번째로 태어난 아기인지를 알 수 있습니다.
    ( 더욱 자세히 얘기하자면 같은 성씨중 .. 즉, 자신이 김씨이고 번호가 2라면 해당지역에서 해당일에 태어난 김씨중 2번째로 태어난 아기가 되는것이죠...  )

    그리고 마지막 13번째 숫자가 올바른주민등록번호인지를 판별하는 검증번호가 됩니다.

    검증방법은 사실 굉장히 간단합니다.

    예) 주민번호 : 123456 - 1234567

    자릿수      01 02 03 04 05 06 07 08 09 10 11 12
    ────────────────────────
    주민번호     1  2  3  4  5  6  1  2  3  4  5  6  
           X     2  3  4  5  6  7  8  9  2  3  4  5 
     
    주민번호의 검증번호13번째 수를 뺀 나머지 12자리에 위의 숫자를 각각 곱한후 그값을 모두 더합니다.
    1*2 + 2*3 + 3*4 + ... = 206

    더한값을 11로 나눕니다.
    206/11 ( 나머지 : 8 )

    나눈값의 나머지을 11로 뺍니다.
    11-8 = 3

    결과값이 13번째 번호와 일치하면 유효한 주민등록번호로 판단합니다.
    3  --  7  불일치 (유효하지 않은 주민등록번호 )

    BOOL VerifyJuminNumber(int number[])
    {
           const int tab[] = {2,3,4,5,6,7,8,9,2,3,4,5};
           int sum = 0;
           int i = 0;
           for(i=0 ; i<12 ; i++)
                 sum += number[i] * tab[i];
      
           return ((11-(sum%11))%10 == number[12])? TRUE:FALSE;
    }
    

    사용자 삽입 이미지

Designed by Tistory.