Validing CPF
Validação do primeiro dígito
Primeiramente multiplica-se os 9 primeiros dígitos pela sequência decrescente de números de 10 à 2 e soma os resultados. Então cosiderando o CPF 123.456.789-09 temos:
Nove primeiros dígitos antes do traço | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
Valor de 10 até 2 para multiplicar | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
Resultado da multiplicação | 10 | 18 | 24 | 28 | 30 | 30 | 28 | 24 | 18 |
Total: 210
O próximo passo da verificação basta multiplicarmos o valor Total
por 10 e dividirmos por 11:
Resto = (210 * 10) % 11 = 10
Se o Resto
for igual ao primeiro dígito verificador, a primeira parte da validação está correta. Contudo, se o Resto
for igual a 10 ou 11, então ele será 0.
Validação do segundo dígito
A validação do segundo dígito é semelhante à primeira, porém vamos multiplicar esses 10 números pela sequencia decrescente de 11 a 2:
Dez primeiros dígitos | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
---|---|---|---|---|---|---|---|---|---|---|
Valor de 11 até 2 para multiplicar | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
Resultado da multiplicação | 11 | 20 | 27 | 32 | 35 | 36 | 35 | 32 | 27 | 0 |
Total: 255
O próximo passo da verificação basta multiplicarmos o valor Total
por 10 e dividirmos por 11:
Resto = (255 * 10) % 11 = 9
Se o Resto
for igual ao segundo dígito verificador, a segunda parte da validação está correta. Contudo, se o Resto
for igual a 10 ou 11, então ele será 0.
Obs: http://www.dicasdeprogramacao.com.br/algoritmo-para-validar-cpf/
Code
ecma/string/validating-cpf/code/validating-cpf.mjs
:
function checkingDigitCpf(cpf) {
// TODO
}
export { checkingDigitCpf };
ecma/string/validating-cpf/code/validating-cpf.print.mjs
:
import { checkingDigitCpf } from './validating-cpf.mjs';
// Checking Digit CPF
// the check digit of 123456789 is 09
console.log(checkingDigitCpf('12345678909'));
console.log(true);