2007/07/04 22:21

주민등록번호 유효성의 체크 로직

주민등록번호 체크 로직

1. 주민등록번호의 앞 6자리의 수에 처음부터 차례대로 2,3,4,5,6,7 을 곱한다. 그 다음, 뒤 7자리의 수에 마지막 자리만 제외하고 차례대로 8,9,2,3,4,5 를 곱한다.

2. 이렇게 곱한 각 자리의 수들을 모두 더한다.

3. 모두 더한 수를 11로 나눈 나머지를 구한다.

4. 이 나머지를 11에서 뺀다.

5. 이렇게 뺀 수가 두 자릿수이면, 즉 10보다 크면 다시 11로 나누어 나머지 값을 구한다.

6. 이렇게 해서 나온 최종 값을 주민등록번호의 마지막 자리 수와 비교해서 같으면 유효한 번호이고 다르면 잘못된 값이다.



아까 그거에 맞춰 제가 짜본 체크 함수 입니다.
오픈 소스 지향~~~ ^^


function isJuminValid(num)
 {
  if(isNaN(num) || num.length != 13) 
  {
   return false;
  } 

  var mm = num.charAt(2) + num.charAt(3);
  var dd = num.charAt(4) + num.charAt(5);

  if(parseInt(mm) == 0 || parseInt(mm) > 12)
  {
   return false;
  }

  if(parseInt(dd) == 0 || parseInt(dd) > 31)
  {
   return false;
  }

  if(parseInt(num.charAt(6)) == 0 || parseInt(num.charAt(6)) > 4)
  {
   return false;
  }

  var arrDivide = [2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5]; 
  var sum = 0;

  for(var i = 0; i < num.length - 1; i++)
  {  
    sum += parseInt(num.charAt(i)) * parseInt(arrDivide[i]); 
  }

  var mod = 11- (sum % 11);
  if(mod >= 10)
  {
   mod = mod % 11;
  }

  if(num.charAt(num.length - 1) != mod)
  {
   return false;
  }

  return true;
 }

크리에이티브 커먼즈 라이선스
Creative Commons License
올블로그추천버튼 블코추천버튼 블로그뉴스추천버튼 믹시추천버튼 한RSS추가버튼 구글리더기추천버튼


이 포스팅이 도움이 되었다면 구글에서 관련 정보를 찾아 보세요 ^^


Trackback 0 Comment 2

Trackback : http://i-ruru.com/trackback/95 관련글 쓰기

  1. philosup 2010/03/16 10:12 address edit & del reply

    정리해놓은 자료가 없어 구글링하다 들어왔습니다. 검색어(주민번호 체크 로직)
    로직 설명의 마지막 부분이 잘못되었네요.
    5번에 10보다 크면 11로 나누는 것이 아니라 10으로 나누어야 합니다.
    이미 11로 나눈 값이라 10보다 크다는건 결국 10이란 소리인데요.
    11로 나누어봤자 계속 10이겠지요^^.

    • Favicon of http://i-ruru.com BlogIcon 써니루루 2010/03/16 19:29 address edit & del

      네 좋은 내용 감사합니다.

      작성하고 검토하질 않아서 오류가 있었나봅니다 ^ ^