Q&A

  • 주민등록번호 검증하는 방법................
안녕하세요...

입력받은 주민등록번호가 정확한건지 체크할수 있는 방법을

알고 싶거든요.

많은 관심 부탁드리구요. 좋은 하루 되세요...*^^*

3  COMMENTS
  • Profile
    사발우성 2000.05.26 19:51
    김보영 wrote:

    > 안녕하세요...

    > 입력받은 주민등록번호가 정확한건지 체크할수 있는 방법을

    > 알고 싶거든요.

    > 많은 관심 부탁드리구요. 좋은 하루 되세요...*^^*



    팁을 찾았슴당....^^ 즐거운 하루 돼셔유

    1. 주민번호 체크 알고리즘

    주민번호 예: 710522-1667819

    체크방법:

    (1) 주민번호 각각의 수에 다음과 같은 수를 곱하여 더한다.

    7 1 0 5 2 2 - 1 6 6 7 8 1 9 <-> ok !

    2. 성별 구문

    주민번호의 하이픈(-)다음의 첫번째 수가 1이면 남자, 2이면 여자임.

    3. 나이 계산

    주민번호의 처음부터 2개이 수가 태어난 년수이므로

    현재 년에서 빼서 1을 더해줌.

    function SSNoCheck(ssno:string;var gender:String;var age:byte):boolean;

    var

    DateStr,YearStr:string;

    BirthYear:Byte;

    tval:integer;

    tval2:integer;

    begin

    tval:=StrToInt(ssno[1])*2 + StrToInt(ssno[2])*3 + StrToInt(ssno[3])*4

    + StrToInt(ssno[4])*5 + StrToInt(ssno[5])*6 + StrToInt(ssno[6])*7

    + StrToInt(ssno[8])*8+ StrToInt(ssno[9])*9 + StrToInt(ssno[10])*2

    + StrToInt(ssno[11])*3 + StrToInt(ssno[12])*4 + StrToInt(ssno[13])*5;

    tval2:=11- (tval mod 11);

    if (StrToInt(ssno[14])=tval2) and (ssno[8] in ['1','2']) then

    SSNoCheck:=true

    else

    SSnoCheck:=false;

    //성별구분

    if ssno[8]='1' then gender:='남'

    else if ssno[8]='2' then gender:='여';

    //나이 계산

    Birthyear:=StrToInt(copy(ssno,1,2));

    DateStr:=DateToStr(now);

    YearStr:=copy(dateStr,1,2);

    age:=StrToInt(YearStr)-BirthYear+1;



    end;









  • Profile
    강호규 2001.04.20 06:26
    약간의 버그가 있는 것 같아 글을 올립니다.

    tval2 = 10 일 경우를 감안하지 않았군요



    [기존]

    tval2 := 11 - (tval mod 11);



    [수정]

    tval2 := 11 - (tval mod 11);

    tval2 := StrToInt(Copy(IntToStr(tval2),Length(IntToStr(tval2)),1));



    이렇게 하면 정확한 값이 검사되네요...





    사발우성 wrote:

    > 김보영 wrote:

    > > 안녕하세요...

    > > 입력받은 주민등록번호가 정확한건지 체크할수 있는 방법을

    > > 알고 싶거든요.

    > > 많은 관심 부탁드리구요. 좋은 하루 되세요...*^^*

    >

    > 팁을 찾았슴당....^^ 즐거운 하루 돼셔유

    > 1. 주민번호 체크 알고리즘

    > 주민번호 예: 710522-1667819

    > 체크방법:

    > (1) 주민번호 각각의 수에 다음과 같은 수를 곱하여 더한다.

    > 7 1 0 5 2 2 - 1 6 6 7 8 1 9 <-> ok !

    > 2. 성별 구문

    > 주민번호의 하이픈(-)다음의 첫번째 수가 1이면 남자, 2이면 여자임.

    > 3. 나이 계산

    > 주민번호의 처음부터 2개이 수가 태어난 년수이므로

    > 현재 년에서 빼서 1을 더해줌.

    > function SSNoCheck(ssno:string;var gender:String;var age:byte):boolean;

    > var

    > DateStr,YearStr:string;

    > BirthYear:Byte;

    > tval:integer;

    > tval2:integer;

    > begin

    > tval:=StrToInt(ssno[1])*2 + StrToInt(ssno[2])*3 + StrToInt(ssno[3])*4

    > + StrToInt(ssno[4])*5 + StrToInt(ssno[5])*6 + StrToInt(ssno[6])*7

    > + StrToInt(ssno[8])*8+ StrToInt(ssno[9])*9 + StrToInt(ssno[10])*2

    > + StrToInt(ssno[11])*3 + StrToInt(ssno[12])*4 + StrToInt(ssno[13])*5;

    > tval2:=11- (tval mod 11);

    > if (StrToInt(ssno[14])=tval2) and (ssno[8] in ['1','2']) then

    > SSNoCheck:=true

    > else

    > SSnoCheck:=false;

    > //성별구분

    > if ssno[8]='1' then gender:='남'

    > else if ssno[8]='2' then gender:='여';

    > //나이 계산

    > Birthyear:=StrToInt(copy(ssno,1,2));

    > DateStr:=DateToStr(now);

    > YearStr:=copy(dateStr,1,2);

    > age:=StrToInt(YearStr)-BirthYear+1;

    >

    > end;

    >

    >

    >

    >

  • Profile
    사발우성 2000.05.26 19:48
    김보영 wrote:

    > 안녕하세요...

    > 입력받은 주민등록번호가 정확한건지 체크할수 있는 방법을

    > 알고 싶거든요.

    > 많은 관심 부탁드리구요. 좋은 하루 되세요...*^^*



    웹에서 찾아 보세요 주민등록계산 하는법을엽.....그럼 간단하지 않나엽....