필요에 의해서 주민번호 알고리즘에 대해서 검색하게 되었다.
처음엔 소스를 그냥 긁어다 쓸려고 했지만 자스를 공부하는 입장에서 그건 좀 아닌듯 싶어서
일단 주민번호 알고리즘을 검색해 보았다.
생각보다 간단한 알고리즘을 가지고 있었다.
1. 주민등록번호 각각의 수에 [2,3,4,5,6,7,8,9,2,3,4,5] 를 순서대로 자리수에 맞게 각각 곱한다.
2. 곱해서 나온 결과 값을 모두 더한다.
3. 합한 값을 11로 나눈 나머지 값을 11로 뺀다.
4. 최종결과값이 주민등록 마지막 자리와 같아야 한다.
이것을 javascript 로 구현해 보았다.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />
<title></title>
<script type="text/javascript">
function juminCheck(){
// 주민번호 앞자리 뒷자리값을 가져온다.
this.jMin1 = document.getElementById("jumin1");
this.jMin2 = document.getElementById("jumin2");
// juminck 함수를 만든다.
this.juminck = function(jumin){
// 전체 합을 넣어줄 변수선언, 0으로 초기화
var jSum = 0;
// 각자리에 곱해줄 수를 배열로 담는다.
var jNum = [2,3,4,5,6,7,8,9,2,3,4,5];
for (var i=0;i<jumin.length-1 ;i++ )
{
// 전체를 루프로 돌리면서 각자리에 chk 배열에
//들어있는 값을 곱하고 sum 변수에 더해준다.
jSum = jSum + (parseInt(jumin.substr(i,1))*jNum[i]);
}
// 모두 더한 값을 11로 나눈 나머지를 11로 빼준다.
var jCkval = (11-(jSum)%11);
// 초종값이 주민번호 마지막 자리와 같은지 비교해서 값을 리턴해준다.
if (jCkval === jumin.substr(12,1))
{
return true;
}else{
return false;
}
};
this.juminck(this.jMin1.value+this.jMin2.value);
}
</script>
</head>
<body>
<input type="text" id="jumin1" name="jumin1" />
<input type="text" id="jumin2" name="jumin2" />
<button onclick="juminCheck()">체크</button>
</body>
</html>
알고리즘도 간단하고 소스도 간단한데 다른 소스들을 보고 쓸때없이 따라하다 시간이 오래걸렸다.
음 이제 부터 남 소스부터 보기도단 알고리즘만 알고 먼저 코딩을 해봐야 겠다.
댓글 없음:
댓글 쓰기