O CPF (Cadastro de Pessoas Físicas) é uma ferramenta essencial para a identificação de cidadãos no Brasil, sendo utilizado em uma variedade de situações, desde transações bancárias até questões fiscais. Contudo, o CPF não é apenas uma sequência aleatória de números, e sim um número estruturado com base em um algoritmo matemático. Em particular, os dois últimos dígitos do CPF, conhecidos como dígitos verificadores, desempenham um papel crucial na validação de sua autenticidade.
Neste artigo, vamos explorar como funciona a estrutura do CPF, como são calculados os dígitos verificadores, e também esclarecer um mito popular sobre a relação do 9º dígito com o local de nascimento do titular.
1. Estrutura do CPF
O CPF é composto por 11 dígitos, organizados no seguinte formato:
AAA.BBB.CCC-DD
Onde:
- AAA.BBB.CCC: Representa os 9 primeiros dígitos que formam a base do número do CPF.
- DD: Representa os 2 últimos dígitos, conhecidos como dígitos verificadores (DV), usados para validar a autenticidade do CPF.
Por exemplo, o CPF 529.982.247-25
é um número válido, onde 25
são os dígitos verificadores calculados com base nos primeiros 9 dígitos.
2. O Algoritmo de Cálculo dos Dígitos Verificadores (D1 e D2)
Os dois últimos dígitos do CPF são calculados a partir dos 9 primeiros números. Eles servem para validar o número do CPF, identificando erros de digitação comuns e ajudando a garantir que o número gerado seja único e válido.
2.1. Como calcular o Primeiro Dígito Verificador (D1)?
O primeiro dígito verificador (D1) é calculado com base nos 9 primeiros dígitos do CPF. O processo é o seguinte:
- Multiplica-se cada um dos 9 primeiros dígitos do CPF por um peso decrescente, começando de 10 até 2:
Dígito (CPF) | 5 | 2 | 9 | 9 | 8 | 2 | 2 | 4 | 7 |
---|---|---|---|---|---|---|---|---|---|
Peso | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
Cálculo | 50 | 18 | 72 | 63 | 48 | 10 | 8 | 12 | 14 |
- Soma-se os resultados das multiplicações:
50 + 18 + 72 + 63 + 48 + 10 + 8 + 12 + 14 = 295
- Divide-se a soma por 11 e obtém-se o resto:
295 ÷ 11 = 26 (resto 9)
- Se o resto for 0 ou 1, o valor do primeiro dígito verificador (D1) será 0. Caso contrário, o valor de D1 será calculado como 11 – resto. Neste caso, como o resto é 9, o valor de D1 será:
11 - 9 = 2
Portanto, D1 = 2.
2.2. Como calcular o Segundo Dígito Verificador (D2)?
O segundo dígito verificador (D2) é calculado de forma semelhante ao primeiro, mas usando os 9 primeiros dígitos do CPF mais o primeiro dígito verificador (D1) que foi calculado. O processo para o cálculo do segundo dígito é o seguinte:
- Multiplica-se os 9 primeiros dígitos do CPF mais o primeiro dígito verificador (D1) por um peso que vai de 11 até 2:
Dígito (CPF + D1) | 5 | 2 | 9 | 9 | 8 | 2 | 2 | 4 | 7 | 2 |
---|---|---|---|---|---|---|---|---|---|---|
Peso | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
Cálculo | 55 | 20 | 81 | 72 | 56 | 12 | 10 | 16 | 21 | 4 |
- Soma-se os resultados das multiplicações:
55 + 20 + 81 + 72 + 56 + 12 + 10 + 16 + 21 + 4 = 347
- Divide-se a soma por 11 e obtém-se o resto:
347 ÷ 11 = 31 (resto 6)
- Se o resto for 0 ou 1, o valor do segundo dígito verificador (D2) será 0. Caso contrário, o valor de D2 será 11 – resto. Como o resto é 6, o valor de D2 será:
11 - 6 = 5
Portanto, D2 = 5.
Assim, o CPF completo é 529.982.247-25
, e está validado com os dígitos verificadores calculados corretamente.
3. A Fórmula do CPF
O CPF é gerado de maneira a garantir que, ao longo do processo de cálculo, a probabilidade de erro seja extremamente reduzida. A estrutura de cálculo é feita de forma a dificultar que qualquer número aleatório seja aceito como CPF válido, já que os dois últimos dígitos dependem de todos os anteriores. Ou seja, qualquer alteração nos primeiros 9 dígitos afetará diretamente a validade dos dois últimos dígitos, tornando o CPF inválido.
Isso ajuda a evitar fraudes e facilita a detecção de erros comuns de digitação, como troca de números ou repetição de sequências numéricas.
4. O Mito do 9º Dígito: Local de Nascimento?
Um dos maiores mitos que circula sobre o CPF é a ideia de que o 9º dígito está relacionado ao local de nascimento da pessoa, sendo que cada número de 0 a 9 representaria um estado do Brasil.
A Tabela Mítica do 9º Dígito
9º Dígito | Estado de Emissão (não necessariamente nascimento) |
---|---|
0 | RS |
1 | DF, GO, MS, MT ou TO |
2 | AC, AM, AP, PA, RO ou RR |
3 | CE, MA ou PI |
4 | AL, PB, PE ou RN |
5 | BA ou SE |
6 | MG |
7 | ES ou RJ |
8 | SP |
9 | PR ou SC |
A Verdade
Embora antigamente o 9º dígito pudesse estar relacionado ao estado de emissão do CPF, isso não é mais verdade. Desde que o sistema de emissão de CPFs foi modernizado, a Receita Federal passou a gerar os números aleatoriamente, sem qualquer vínculo com a localização de emissão. Portanto, o 9º dígito não tem mais nenhuma relação com o estado de nascimento ou o local de emissão do CPF.
Este mito persistiu por anos, mas hoje em dia, o 9º dígito é apenas uma parte do número gerado de maneira aleatória, sem qualquer influência geográfica.
5. Como Validar um CPF Corretamente?
Agora que entendemos como os dígitos verificadores são calculados e desmistificamos o mito sobre o 9º dígito, é importante saber como realizar a validação de um CPF corretamente. Como mostrado anteriormente, o processo envolve calcular os dois dígitos verificadores e comparar com os valores informados no número original do CPF. Se houver qualquer discrepância, o CPF será inválido.
Além disso, é importante sempre verificar se o CPF não segue padrões como sequências repetidas (exemplo: 111.111.111-11
) ou números inválidos gerados aleatoriamente (como 123.456.789-00
).
6. Código PHP para Validar CPF
Aqui está o código PHP para realizar a validação de um CPF de forma simples e direta:
function validarCPF(string $cpf): bool {
// Remove qualquer caractere não numérico
$cpf = preg_replace('/\D/', '', $cpf);
// Verifica se tem 11 dígitos ou se é uma sequência repetida
if (strlen($cpf) != 11 || preg_match('/^(\d)\1+$/', $cpf)) {
return false;
}
// Calcula o primeiro dígito verificador (D1)
$soma = 0;
for ($i = 0; $i < 9; $i++) {
$soma += $cpf[$i] * (10 - $i);
}
$d1 = ($soma % 11 < 2) ? 0 : 11 - ($soma % 11);
// Calcula o segundo dígito verificador (D2)
$soma = 0;
for ($i = 0; $i < 10; $i++) {
$soma += $cpf[$i] * (11 - $i);
}
$d2 = ($soma % 11 < 2) ? 0 : 11 - ($soma % 11);
// Retorna true apenas se os DVs batem
return ($cpf[9] == $d1 && $cpf[10] == $d2);
}
$cpf = "52998224725"; // Exemplo de CPF
if (validarCPF($cpf)) {
echo "CPF Válido!";
} else {
echo "CPF Inválido!";
}
Conclusão
Entender a estrutura e a matemática por trás do CPF é fundamental para garantir que os números sejam válidos e evitar fraudes. A fórmula dos dígitos verificadores ajuda a identificar erros de digitação e evita que números inválidos sejam gerados. E, ao contrário do que muitos acreditam, o 9º dígito não tem mais relação com o local de nascimento.
Esse conhecimento é uma ferramenta poderosa na luta contra fraudes e garante a integridade dos dados no Brasil. Ao entender como os cálculos funcionam, qualquer erro de digitação pode ser facilmente identificado, e a autenticidade do CPF pode ser confirmada.