Como funciona a lógica da validação do CPF

Entenda as regras por trás da validação deste importante documento

Hoje você vai aprender como funciona o cálculo de verificação do CPF.

O cadastro de pessoas físicas (CPF) é o registro de um cidadão na Receita Federal do Brasil. Devem estar inscritos todos os contribuintes do tipo pessoa físicas, nacionais e estrangeiros com negócios no Brasil.

O número de CPF é composto por 11 dígitos. Os 9 primeiros são os números base, e os 2 últimos são os chamados dígitos verificadores, que são utilizados para validar se os 9 números base estão corretos. É importante lembrar que mesmo que o número seja válido, isso não quer dizer que ele  esteja cadastrado na Receita Federal. 

Não existem CPFs onde todos os números sejam iguais entre si.

Vamos fazer passo a passo a verificação de um número de CPF gerado de forma aleatório atráves da utilização de um site Gerador de CPF. Existem vários sites que fazem isso, você pode escolher qual quiser. O número gerado foi 344858610-23

O primeiro dígito verificador é o "2" (posição 10) e o segundo é o "3" (posição 11).

A primeira validação é multiplicar cada número base em separado, começando com 10 e terminando com 2:

3 x 10 = 30

4 x 9 = 36

4 x 8 = 32

8 x 7 = 56

5 x 6 = 30

8 x 5 = 40

6 x 4 = 24

1 x 3 = 3

0 x 2 = 0

 

30 + 36 + 32 + 56 + 30 + 40 + 24 + 3 + 0 = 251

 

Depois, se divide o resultado por 11:

251 /11 = 22,81

Vamos pegar o resto desta divisão

Resto = 251 - (11 * 22) = 9

REGRA 1: Se o resto for 0 ou 1, então o primeiro dígito verificador é igual a 0.

REGRA 2: Se o resto for 2, 3, 4, 5, 6, 7, 8, 9 ou 10, então o primeiro dígito verificador é a diferença entre o número 11 e o resto da divisão por 11

Em nosso exemplo, se aplica a Regra 2

Primeiro dígito verificador: 11 - 9 = 2

Agora vem a validação final, que é a do segundo dígito verificador. Será necessário multiplicar cada número base em separado, junto com o primeiro dígito verificador, começando com 11 e terminando com 2:

3 x 11 = 33

4 x 10 = 40

4 x 9 = 36

8 x 8 = 64

5 x 7 = 35

8 x 6 = 48

6 x 5 = 30

1 x 4 = 4

0 x 3 = 0

2 x 2 = 4

 

33 + 40 + 36 + 64 + 35 + 48 + 30 + 4 + 0 + 4 = 294

 

Depois, se divide o resultado por 11:

294/ 11 = 26,72

Vamos pegar o resto desta divisão

Resto = 294 - (11 * 26) = 8

REGRA 1: Se o resto for 0 ou 1, então o segundo dígito verificador será igual a 0.

REGRA 2: Se  o resto for 2, 3, 4, 5, 6, 7, 8, 9 ou 10, então o segundo dígito verificador é a diferença entre o número 11 e o resto da divisão por 11

Em nosso exemplo, se aplica a Regra 2

Segundo dígito verificador: 11 - 8 = 3

O numero do CPF tem mais uma informação. O último número base (o número localizado na posição 9) serve para marcar qual o estado de origem daquele cadastro. 

0 - Rio Grande do Sul

1 - Distrito Federal, Goiás, Mato Grosso, Mato Grosso do Sul e Tocantins

2 - Amazonas, Pará, Roraima, Amapá, Acre e Rondônia

3 - Ceará, Maranhão e Piauí

4 - Paraíba, Pernambuco, Alagoas e Rio Grande do Norte

5 - Bahia e Sergipe

6 - Minas Gerais

7 - Rio de Janeiro e Espírito Santo

8 - São Paulo

9 - Paraná e Santa Catarina

Aqui tem um exemplo de função para validar CPF com JavaScript:

function checaCPF (CPF) {

if (CPF.length != 11 || CPF == "00000000000" || CPF == "11111111111" ||

CPF == "22222222222" || CPF == "33333333333" || CPF == "44444444444" ||

CPF == "55555555555" || CPF == "66666666666" || CPF == "77777777777" ||

CPF == "88888888888" || CPF == "99999999999" || CPF == "01234567890")

return false;

soma = 0;

for (i=0; i < 9; i ++)

soma += parseInt(CPF.charAt(i)) * (10 - i);

resto = 11 - (soma % 11);

if (resto == 10 || resto == 11)

resto = 0;

if (resto != parseInt(CPF.charAt(9)))

return false;

soma = 0;

for (i = 0; i < 10; i ++)

soma += parseInt(CPF.charAt(i)) * (11 - i);

resto = 11 - (soma % 11);

if (resto == 10 || resto == 11)

resto = 0;

if (resto != parseInt(CPF.charAt(10)))

return false;

       

return true;

 }

 console.log(checaCPF('34485861023'));

 

 

Quer conferir mais dicas sobre JavaScript? Clique aqui e veja mais dicas!