18ビットIDカード検証アルゴリズム
IDカード検証コードアルゴリズム
IDカード検証コードを生成する方法:
∑(ai×wi)(mod11)
I:左からの検証コードを含む位置番号を示します。
AIは、i番目の位置での数値文字値を表します。
Wiのi番目の位置での重み係数、その値wi = mod(power(2、(n-1))、11)
I181716151413121110987654321
Wi79105842163791058421
対応する検証コード:
∑(ai×wi)(mod11)012345678910
コード文字値AI10x98765432を確認します
これがチェック関数です:
functionsfzjy(num)
iflen(num)= 15then
cid = left(num、6)& "19"&右(num、9)
elseiflen(num)= 17orlen(num)= 18then
cid = left(num、17)
endif
nsum = mid(cid、1,1)*7
nsum = nsum+mid(cid、2,1)*9
nsum = nsum+mid(cid、3,1)*10
nsum = nsum+mid(cid、4,1)*5
nsum = nsum+mid(cid、5,1)*8
nsum = nsum+mid(cid、6,1)*4
nsum = nsum+mid(cid、7,1)*2
nsum = nsum+mid(cid、8,1)*1
nsum = nsum+mid(cid、9,1)*6
nsum = nsum+mid(cid、10,1)*3
nsum = nsum+mid(cid、11,1)*7
nsum = nsum+mid(cid、12,1)*9
nsum = nsum+mid(cid、13,1)*10
nsum = nsum+mid(cid、14,1)*5
nsum = nsum+mid(cid、15,1)*8
nsum = nsum+mid(cid、16,1)*4
nsum = nsum+mid(cid、17,1)*2
'*チェックビットを計算します
check_number = 12-nsummod11
ifcheck_number = 10thencheck_number = "x" elseifcheck_number = 12thencheck_number = "1" elseifcheck_number = 11thencheck_number = "0" endifsfzjy = check_number
エンド機能
その他の検証:
性別と生年月日:
sfznum = id番号
lenx = len(sfznum)
iflenx = 15then
yy = "19"&mid(xian、7,2)
mm = mid(xian、9,2)
DD = MID(Xian、11,2)
aa = mid(xian、15,1)'15 -digitの身分証明書は15位にランクされ、2人の女性に分けることができます
endif
iflenx = 18then
yy = mid(xian、7,4)
mm = mid(xian、11,2)
dd = mid(xian、13,2)