주민번호는 AAAAAA-XBBBBBY
- 를 빼면 숫자 13자리이다.
앞에 6자리는 생년월일이고,
뒤에 7자리중에 첫번째가 구분값이다.
이값이 5,6,7,8 이면, 재외국인이며, 그외에는 내국인이다.
맨뒤 1자리는 오류검증값이 된다.
유효성 검증로직은
13번째 오류검증값을 제외하고, 12개의 숫자를
234567892345
이 숫자와 각 자리수별로 곱한다음 sum 을 한다.
이 값을 11로 나눈 나머지를 11에서 빼고, 맨뒤 1의 자리(0~9)만 취한다.
이 값에 다시 2를 더한다음, 맨뒤 1의 자리(0~9)만 취한다.
이 값이 오류검증값이 되는 것이다.
// Copyright 헝그리개발자(http://bemeal2.tistory.com) // 소스는 자유롭게 사용가능합니다. Copyright 는 삭제하지 마세요. // 재외국인 주민번호 유효성 검사 private static bool IsValidForeignRegNo(string reg_no) { int sum = 0; int odd = 0; int[] arrBuffer = new int[13]; for(int i=0; i < 13; i++) { arrBuffer[i] = Convert.ToInt32(reg_no[i].ToString()); } odd = arrBuffer[7]*10 + arrBuffer[8]; if(odd % 2 != 0) return false; int[] multipliers = {2,3,4,5,6,7,8,9,2,3,4,5}; for(int i=0; i < 12; i++) { sum += (arrBuffer[i] *= multipliers[i]); } sum = 11 - (sum % 11); if(sum >= 10) sum -= 10; sum += 2; if(sum >= 10) sum -= 10; return (sum == arrBuffer[12]); } |
코드는 C# 으로 작성되었으나, 코드가 아주 간단하여, 사용하는 언어로 포팅하여 사용하면 된다.
'개발팁' 카테고리의 다른 글
C# 어플리케이션 캐쉬 만들기 (0) | 2016.07.26 |
---|---|
Windows 7 에서 JDK 8 이 설치가 안될때 해결방법 (0) | 2016.07.23 |
사업자번호 유효성 검사 (1) | 2016.07.21 |
ASP.NET MVC 에서 ViewEngine을 이용한 엑셀다운로드 방법 (0) | 2016.07.20 |
C# Extention Method - 확장메서드 사용하기 (0) | 2016.07.19 |