반응형
1. 자리수
 - 주민번호와 동일하게 앞 6자리 뒤 7자리임
 - YyMmDd-ABCEFGH

2. 년도에 따른 변화
 - 1900년대 생은 위의 A가 5 또는 6
 - 2000년대 생은 위의 A가 7 또는 8
 - 1800년대 생은 위의 A가 9 또는 0 중에 랜덤하게 생성 

3. C 값 결정
 - B*10+C 값이 2의 짝수 이어야 함
 - 즉 C값이 짝수 이어야 함, 0,2,4,8 중에 하나로 랜덤하게 생성

4. G 값 결정
 - G값은 6,7,8,9 중 하나이여야 함
 - 6-9 까지 랜덤하게 생성

5. B,E,F 값을 랜덤하게 생성

6. H 값은 다음의 공식에 의해셔 결정된다
 1) sum = 11-(Y*2 + y*3 + M*4 + m*5 + D*6 + d*7 + A*8 + B*9 + C*2 + E*3 + F*4 + G*5)%11
 2) sum이 9보다 크면 sum=sum%10 임
 5) H는 sum 값임

외국인 번로 랜덤 생성 Ruby Script

require 'date'
initial_data=''YYYYMMDD'
index=0;
reg_initial=[]
reg_no=[]
initial_data.each_char do |c|
    reg_initial[index]=c.to_i
    index=index+1
end

reg_no[0]=reg_initial[2]
reg_no[1]=reg_initial[3]
reg_no[2]=reg_initial[4]
reg_no[3]=reg_initial[5]
reg_no[4]=reg_initial[6]
reg_no[5]=reg_initial[7]

birthYear=reg_initial[0]*10+reg_initial[1]

if birthYear==19
    rand(10)>5 ? reg_no[6]=5 : reg_no[6]=6
elsif birthYear==20
    rand(10)>5 ? reg_no[6]=7 : reg_no[6]=8
elsif birthyear==18
    rand(10)>5 ? reg_no[6]=9 : reg_no[6]=0
end

reg_no[8]=rand(4)*2
reg_no[11]=rand(3)+6

reg_no[7]=rand(9)
reg_no[9]=rand(9)
reg_no[10]=rand(9)

sum=reg_no[0]*2+reg_no[1]*3+reg_no[2]*4+reg_no[3]*5+reg_no[4]*6+reg_no[5]*7+reg_no[6]*8+reg_no[7]*9+reg_no[8]*2+reg_no[9]*3+reg_no[1
0]*4+reg_no[11]*5
sum=sum%11
sum1=11-sum
sum1>9 ? sum1=sum1%10 : sum1=sum1
sum1=sum1+2
reg_no[12]=sum1

foregnNum=''
reg_no.map { |x| foregnNum=foregnNum+x.to_s}
puts foregnNum

P.S 주의!! 위 스크립트는 학습 목적으로 제작된 것으로 다른용도로 사용하지 말것.
반응형
Posted by alias
,