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

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

Hoje você vai aprender como funciona o cálculo de verificação do CPF. Este artigo vai abordar como funciona a regra de validação do CPF.

O que você vai ler neste artigo?

 

* O que é o CPF?

* Quantos números tem o CPF

* Regra de Validação do CPF

* Cálculo do primeiro dígito verificador

* Cálculo do segundo dígito verificador

* Como validar o CPF utilizando JavaScript

* Exemplos de validação do CPF utilizando PHP, SQL Server e MySQL.

 

O que é o 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 Cadastro de Pessoas Físicas foi criado em 1968. Ao contrário do RG, o CPF é um documento único a nível nacional e por muito tempo foi o único cadastro nacional a conter os dados de brasileiros natos, naturalizados e estrangeiros residentes no país.

Quantos números tem o CPF

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.

Validação do CPF

Vamos fazer passo a passo a verificação de um número de CPF gerado de forma aleatória atráves da utilização de um site Gerador de CPF. O site usado para gerar o CPF aleatório usado neste artigo foi este:

4devs - Gerador de CPF

Existem vários sites que fazem isso, você pode escolher qual quiser. O número gerado foi 344858610-23

O CPF possui 2 digitos verificadores, que são os 2 últimos dígitos. Eles servem para validar os demais digitos, desta forma evitam fraudes ou erros de digitação.

 

Cálculo do primeiro dígito verificador

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

 

Cálculo do segundo dígito verificador

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

A lógica para validar um CNPJ é parecida com a utilizada pelo CPF. Se deseja saber como é validado um CNPJ, pode consultar o link a seguir:

Como funciona a lógica de validação do CNPJ

 

Como validar o CPF utilizando JavaScript

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'));

 

Exemplos de validação do CPF utilizando PHP, SQL Server e MySQL 

Se você deseja aprender como pode validar o formato do CPF utilizando um banco de dados SQL, consulte as páginas a seguir:

 

Validar CPF com SQL Server

 

Validar CPF com MySQL

 

Se a sua necessidade é validar o CPF utilizando PHP, consulte a página a seguir:

 Validando CPF e CNPJ com PHP

 

Está começando e deseja saber o que precisa estudar de HTML e JavaScript? Não deixe de conferir os roteiros de estudo de HTML e JavaScript!. São dezenas de conteúdos para você melhorar suas habilidades.

Roteiro de estudos - HTML e CSS

Roteiro de estudos - Javascript

 

Outros conteudos que podem ser de seu interesse

Recursos gratuitos para você utilizar em seu frontend
21/08/2022JAVASCRIPT

Recursos gratuitos para você utilizar em seu frontend

Geradores de CSS e bancos de imagens para melhorar o seu projeto

Saiba mais...
API REST em 30 segundos com NodeJS
30/12/2020JAVASCRIPT

API REST em 30 segundos com NodeJS

Nunca foi tão fácil prototipar uma API REST usando NodeJS

Saiba mais...

Conteúdo sobre banco de dados sem complicação!