CPF (Cadastro de Pessoa Física) é um documento muito utilizado no Brasil, feito pela Receita Federal e serve para a identificação de uma pessoa.
O CPF precisa ter 11 dígitos incluindo o verificador, por exemplo:
123.456.789-10
O dígito depois do traço é o código verificador, é com ele que conseguimos descobrir se aquela sequência de números antes do traço é válida, que, no caso deste exemplo, é falso.
Como validar
A partir daqui será mostrado um passo a passo de como é feito uma validação de CPF:
1 – Descobrindo o primeiro dígito verificador
Vamos pegar os primeiros nove dígitos do CPF, deixando de lado o verificador (pois é ele que iremos verificar depois se o resultado bate), assim, podemos formar uma tabela com estes nove dígitos:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Depois, adicionaremos “pesos” de começando do 10 de forma decrescente, até chegar no dois, dessa forma:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
E por fim fazemos a multiplicação dos dígitos de cima e de baixo, resultando em uma terceira linha:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
| 10 | 18 | 24 | 28 | 30 | 30 | 28 | 24 | 18 |
Obtemos o seguinte resultado:
10, 18, 24, 28, 30, 30, 28, 24, 18.
Somamos todos esses números:
10 + 18 + 24 + 28 + 30 + 30 + 28 + 24 + 18 = 210
2 – Agora é hora de descobrir o primeiro dígito verificador, para isso, é necessário pegar este resultado da soma e dividir por 11.
210 / 11 = 19,0909…
Mas não queremos o resultado, queremos o resto da divisão, ou seja, aquele número a esquerda que não pôde ser dividido e precisariamos adicionar vírgula para continuar.
| 210 | 11 |
| 209 | 19 |
| 1 |
Descobrimos que o resto da divisão é 1.
Agora as condições:
- Se o resto da divisão for 0 ou 1: o primeiro dígito verificador é igual a zero.
- Caso contrário, é necessário subtrair este resto da divisão por 11. Por exemplo, se o resto da divisão for 2, fariamos 11 – 2 = 9.
O resultado destas condições sera o valor do primeiro dígito verificador, exemplo: xxx.xxx.xxx-0x.
2 – Descobrindo o segundo dígito verificador
É bem parecido com a tabela do primeiro dígito, só que dessa vez, iremos incluir este primeiro dígito verificador que achamos.
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
| 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
| 11 | 20 | 27 | 32 | 35 | 36 | 35 | 32 | 27 | 0 |
Resultando em
11 + 20 + 27 + 32 + 35 + 36 + 35 + 32 + 27 + 0
Que é igual a
255
| 255 | 11 |
| 253 | 23 |
| 2 |
Verificamos as condições novamente:
- Se o resto da divisão for 0 ou 1: o primeiro dígito verificador é igual a zero.
- Caso contrário, é necessário subtrair este resto da divisão por 11.
O resultado deu 2, portanto, iremos subtrair 2 de 11, resultando em 9 como resultado do segundo dígito de verificação.
O CPF, neste exemplo, precisaria ter os dígitos verificadores 09 para ser considerado válido, vamos ver.
123.456.789-10 é igual a 123.456.789-09?
Falso, o CPF é inválido.
3 – Outras condições
- Os dígitos não podem ser todos iguais.
- Não pode existir CPF com todos os números repetidos, por exemplo 111.111.111-11, 222.222.222-22, etc.
Curiosidades:
- Dentre os 9 primeiros dígitos, o último corresponde a região fiscal, de 0 a 9. Confira as regiões fiscais aqui.
- A soma de todos os dígitos de um CPF incluindo os verificadores normalmente dará 22, 33, 44, 55 ou 66 ou próximo desses números.