18-битный алгоритм проверки удостоверения личности
Алгоритм проверки идентификационной карты
Как генерировать код проверки идентификационных карт:
∑ (ai × wi) (mod11)
I: указывает номер позиции, включая код проверки слева;
ИИ представляет число символов в позиции I-TH;
Весовой коэффициент в положении I-TH WI, его значение wi = mod (Power (2, (N-1)), 11)
I181716151413121110987654321
WI79105842163791058421
Соответствующий код проверки:
∑ (AI × Wi) (MOD11) 012345678910
Проверьте код значения символа AI10x98765432
Вот функция проверки:
Functionsfzjy (num)
iflen (num) = 15then
CID = слева (num, 6) и "19" & справа (num, 9)
elseiflen (num) = 17orlen (num) = 18then
CID = слева (num, 17)
эндиф
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 = идентификационный номер
Lenx = len (sfznum)
iflenx = 15then
yy = "19" & Mid (Xian, 7,2)
мм = середина (Xian, 9,2)
DD = середина (Xian, 11,2)
AA = Mid (Xian, 15,1) '15-Дигита, идентификационная карта может быть занят 15-е место, можно разделить на 2 женщины
эндиф
iflenx = 18then
yy = середина (Xian, 7,4)
мм = середина (Xian, 11,2)
DD = середина (Xian, 13,2)