NumberTheory와 관계가 있는내용인지는 모르겠지만서도, 주민등록번호에는 어떤 원리들이 숨어있을까.

우리나라 주민번호는 6자리-7자리 로 이루어져있다.

$$ y_1 y_2 m_1 m_2 d_1 d_2 - s l_1 l_2 l_3 l_4 n k $$

  • y,m,d 는 생년월일의미
  • s 는 성별을 의미 : 1 남, 2 여 (2000년 이후는 3 남, 4 여)
  • l 출생지역 (출생신고를 한 지역)
  • n 앞 숫자들이 모두 같을 때 하나씩 증가. 기본 1
  • k 는 유효한 번호인지 확인하는 수 (보통 웹에서 사용자인증에 많이 사용됨. 본 정보의 악용이 우려되나, 최근 WebProgramming에서 예제로 너무 많이 등장하는 관계로, 거의 다 알고있슴)

인증방법 (k계산법)

$$ k = 11 - ((2y_1 + 3y_2 + 4m_1 + 5m_2 + 6d_1 + 7d_2 + 8s + 9l_1 + 2l_2 + 3l_3 + 4l_4 + n) \bmod 11) $$

보통의 웹에서는 위 식을 이용해서 k값이 맞는가를 확인한다. 왜 하필 11로 나눠주고, 11에서 빼는건지, 알고싶다.

관련 JavaScript : [ResidentRegistrationNumber.js]

주민등록번호입력

참고사항

허위 주민번호사용은 법적제재를 받을 수도 있다.

Python테스트 : [ResidentRegistrationNumber.py]

정보통신부 고시에 의거 청소년유해내용은 [PICS]에 의한 전자적표시 및 JavaScript가 아닌 공신력있는기관으로 부터의 성인인증이 필요하다.

ResidentRegistrationNumber (last edited 2011-08-03 11:00:46 by localhost)

web biohackers.net