1. 주민등록번호
2. 재외국인 등록번호
3. 사업자등록번호
등의 진위 여부를 체크할 수 있는
JavaScript입니다.
(정통부(?)에서 공개되어있던
스크립트일겁니다...)
사용법은
check_fgnno('외국인번호13자리');
check_juminno('주민번호13자리');
check_busino('사업자번호10자리');
----------------------------------------------------
<!--
//
재외국인 번호 체크
function check_fgnno(fgnno) {
var sum=0;
var
odd=0;
buf = new Array(13);
for(i=0; i<13; i++) {
buf[i]=parseInt(fgnno.charAt(i)); }
odd = buf[7]*10 +
buf[8];
if(odd%2 != 0) { return false; }
if( (buf[11]!=6)
&& (buf[11]!=7) && (buf[11]!=8) && (buf[11]!=9) )
{
return false;
}
multipliers =
[2,3,4,5,6,7,8,9,2,3,4,5];
for(i=0, sum=0; i<12; i++) { sum +=
(buf[i] *= multipliers[i]); }
sum = 11 - (sum%11);
if(sum
>= 10) { sum -= 10; }
sum += 2;
if(sum >= 10) { sum
-= 10; }
if(sum != buf[12]) { return false }
return
true;
}
// 주민번호 체크
function check_juminno(juminno)
{
if(juminno=="" || juminno==null || juminno.length!=13)
{
alert("주민등록번호를 적어주세요.");
return
false;
}
var jumin1 = juminno.substr(0,6);
var
jumin2 = juminno.substr(6,7);
var yy =
jumin1.substr(0,2); // 년도
var mm =
jumin1.substr(2,2); // 월
var dd =
jumin1.substr(4,2); // 일
var genda =
jumin2.substr(0,1); // 성별
var msg, ss, cc;
//
숫자가 아닌 것을 입력한 경우
if (!isNumeric(jumin1))
{
alert("주민등록번호 앞자리를 숫자로 입력하세요.");
return
false;
}
// 길이가 6이 아닌 경우
if (jumin1.length !=
6) {
alert("주민등록번호 앞자리를 다시
입력하세요.");
return false;
}
// 첫번째 자료에서
연월일(YYMMDD) 형식 중 기본 구성 검사
if (yy < "00" || yy > "99"
||
mm < "01" || mm > "12" ||
dd <
"01" || dd > "31") {
alert("주민등록번호 앞자리를 다시
입력하세요.");
return false;
}
// 숫자가 아닌 것을
입력한 경우
if (!isNumeric(jumin2)) {
alert("주민등록번호
뒷자리를 숫자로 입력하세요.");
return false;
}
//
길이가 7이 아닌 경우
if (jumin2.length != 7)
{
alert("주민등록번호 뒷자리를 다시 입력하세요.");
return
false;
}
// 성별부분이 1 ~ 4 가 아닌 경우
if (genda <
"1" || genda > "4") {
alert("주민등록번호 뒷자리를 다시
입력하세요.");
return false;
}
// 연도 계산 - 1
또는 2: 1900년대, 3 또는 4: 2000년대
cc = (genda == "1" || genda == "2") ?
"19" : "20";
// 첫번째 자료에서 연월일(YYMMDD) 형식 중 날짜 형식 검사
if
(isYYYYMMDD(parseInt(cc+yy), parseInt(mm), parseInt(dd)) == false)
{
alert("주민등록번호 앞자리를 다시 입력하세요.");
return
false;
}
// Check Digit 검사
if (!isSSN(jumin1,
jumin2)) {
alert("입력한 주민등록번호를 검토한 후, 다시
입력하세요.");
return false;
}
return
true;
}
// 사업자등록번호 체크
function check_busino(vencod)
{
var sum = 0;
var getlist =new Array(10);
var
chkvalue =new Array("1","3","7","1","3","7","1","3","5");
for(var
i=0; i<10; i++) { getlist[i] = vencod.substring(i, i+1); }
for(var
i=0; i<9; i++) { sum += getlist[i]*chkvalue[i]; }
sum = sum +
parseInt((getlist[8]*5)/10);
sidliy = sum % 10;
sidchk =
0;
if(sidliy != 0) { sidchk = 10 - sidliy; }
else { sidchk
= 0; }
if(sidchk != getlist[9]) { return false; }
return
true;
}
function isYYYYMMDD(y, m, d) {
switch (m)
{
case 2: // 2월의 경우
if (d > 29) return
false;
if (d == 29) {
// 2월 29의 경우
당해가 윤년인지를 확인
if ((y % 4 != 0) || (y % 100 == 0)
&& (y % 400 != 0))
return
false;
}
break;
case
4: // 작은 달의 경우
case 6:
case 9:
case
11:
if (d == 31) return false;
}
// 큰
달의 경우
return true;
}
function isNumeric(s) {
for
(i=0; i<s.length; i++) {
c = s.substr(i,
1);
if (c < "0" || c > "9") return
false;
}
return true;
}
function isLeapYear(y)
{
if (y < 100)
y = y + 1900;
if ( (y % 4 ==
0) && (y % 100 != 0) || (y % 400 == 0) ) {
return
true;
} else {
return
false;
}
}
function getNumberOfDate(yy, mm) {
month
= new Array(29,31,28,31,30,31,30,31,31,30,31,30,31);
if (mm == 2
&& isLeapYear(yy)) mm = 0;
return month[mm];
}
function
isSSN(s1, s2) {
n = 2;
sum = 0;
for (i=0;
i<s1.length; i++)
sum += parseInt(s1.substr(i, 1)) *
n++;
for (i=0; i<s2.length-1; i++) {
sum +=
parseInt(s2.substr(i, 1)) * n++;
if (n == 10) n =
2;
}
c = 11 - sum % 11;
if (c == 11) c =
1;
if (c == 10) c = 0;
if (c != parseInt(s2.substr(6, 1)))
return false;
else return true;
}
//-->
실용적인 디지털 포렌식 기법과 법률 이슈 정리. Linux, UNIX, Python, 임베디드 장치 개발 등의 강좌 수록. Blockchain, FinTech, IoT 등 최신 IT 트렌드와 관련된 취미 자료를 수집하고, 보안 인식 문화 개선을 위한 정보보호 관련 자료와 일상생활 팁들을 소개.
홈페이지 jQuery 라이브러리에서 CVE-2019-11358 취약점 패치 여부 확인 방법
현재 홈페이지에서 사용 중인 jQuery 라이브러리가 CVE-2019-11358 취약점 패치를 적용했는지 확인하는 방법은 다음과 같습니다. 1. jQuery 버전 확인 홈페이지 소스 코드를 확인하여 jQuery 라이브러리 버전을 직접 확인합니다. 웹 ...
-
뉴스출처 : http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&oid=023&aid=0002991158&sid1=001 내 배우자가 바람을 피우는 것이 확실할까. 심증...
-
PHPSCHOOL ( http://www.phpschool.com ) 국내 1위의 PHP 개발자 커뮤니티 사이트이다. PHP Builder ( http://www.phpbuilder.com ) PHP 최고 사이트라고 해도 과언이 아니며, 새로운 P...