Algoritmo de verificação de cartão de identificação de 18 bits
Algoritmo de código de verificação do cartão de identificação
Como gerar código de verificação do cartão de identificação:
∑ (ai × wi) (mod11)
I: indica o número da posição, incluindo o código de verificação da esquerda;
Ai representa o valor do caractere numérico na posição I -th;
O fator de ponderação na i-ésima posição do WI, seu valor Wi = mod (potência (2, (n-1)), 11)
I181716151413121110987654321
WI79105842163791058421
Código de verificação correspondente:
∑ (ai × wi) (mod11) 012345678910
Verifique o valor do caractere Ai10x98765432
Aqui está a função de verificação:
Funçõesfzjy (num)
iflen (num) = 15then
cid = esquerda (num, 6) e "19" e direita (num, 9)
elseiflen (num) = 17orlen (num) = 18then
cid = esquerda (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
'* Calcule o bit de verificação
check_number = 12-nSummod11
Ifcheck_number = 10thencheck_number = "x" elseifcheck_number = 12thencheck_number = "1" elseifcheck_number = 11thencheck_number = "0" endifsfzjy = check_number
Função final
Outras verificações:
Gênero e data de nascimento:
sfznum = número de identificação
lenx = len (sfznum)
iflenx = 15then
yy = "19" & Mid (Xian, 7,2)
mm = médio (Xian, 9,2)
dd = médio (Xian, 11,2)
AA = MID (XIAN, 15,1) '15-O cartão de identidade do dígito pode ser classificado em 15º lugar, pode ser dividido em 2 mulheres
endif
iflenx = 18then
yy = MID (Xian, 7,4)
mm = médio (Xian, 11,2)
dd = médio (Xian, 13,2)