Quase todo número de documento brasileiro termina com um ou dois dígitos que parecem aleatórios, mas não são. Eles são calculados a partir dos demais dígitos e existem para um único fim: permitir que qualquer sistema perceba, sem consultar nenhuma base de dados, que o número foi digitado errado. Este guia explica como isso funciona, mostra um cálculo completo e deixa claro o que o dígito verificador não garante.
A ideia central
Um dígito verificador (DV) é o resultado de uma pequena conta feita sobre os dígitos anteriores. Quem digita o número escreve todos os dígitos, inclusive o DV. Quem recebe repete a conta sobre os dígitos de base e compara com o DV recebido: se bater, o número é matematicamente válido; se não bater, houve algum erro de digitação, de leitura ou de transmissão. Não é criptografia nem segredo: a conta é pública.
Exemplo completo: o CPF 123.456.789-09
O CPF tem nove dígitos de base e dois dígitos verificadores. O primeiro DV usa os pesos 10, 9, 8, 7, 6, 5, 4, 3 e 2 sobre os nove dígitos:
1×10 + 2×9 + 3×8 + 4×7 + 5×6 + 6×5 + 7×4 + 8×3 + 9×2 = 210
210 mod 11 = 1 → resto menor que 2, então DV1 = 0
O segundo DV repete a conta sobre os dez dígitos já conhecidos (os nove de base mais o DV1), agora com pesos de 11 a 2:
1×11 + 2×10 + 3×9 + 4×8 + 5×7 + 6×6 + 7×5 + 8×4 + 9×3 + 0×2 = 255
255 mod 11 = 2 → DV2 = 11 − 2 = 9
A regra geral é: calcula-se o resto da soma ponderada dividida por 11; se
o resto for 0 ou 1, o DV é 0; caso contrário, o DV é 11 menos o resto. O
resultado é 123.456.789-09. Você pode conferir esse cálculo
no validador de CPF.
Cada documento tem a sua conta
- CNPJ: doze dígitos de base e dois DVs, também com módulo 11, mas com pesos 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 para o primeiro DV e 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 para o segundo. Veja o validador de CNPJ.
- Cartões de pagamento: usam o algoritmo de Luhn (módulo 10), explicado em detalhe em Algoritmo de Luhn passo a passo.
-
IBAN: o padrão internacional de contas move os quatro
primeiros caracteres para o fim, troca letras por números (A vale 10, B
vale 11, e assim por diante) e exige que o número inteiro resultante dê
resto 1 na divisão por 97. O exemplo de documentação
GB82 WEST 1234 5698 7654 32passa nessa conta. -
ISBN-13: os doze primeiros dígitos são multiplicados
alternadamente por 1 e por 3, e o DV completa a soma até o próximo
múltiplo de 10. No
978-0-306-40615-7, o 7 final é esse complemento. O ISBN-10 antigo usa módulo 11 com pesos de 10 a 2 e pode terminar emX, que representa o valor 10.
O que o dígito verificador detecta
O objetivo é pegar erros humanos comuns. Nos esquemas com pesos
diferentes por posição, trocar um único dígito quase sempre muda a soma e
faz o DV deixar de bater, porque cada posição contribui com um peso
próprio. No algoritmo de Luhn, qualquer erro em um único dígito é
detectado, assim como a maioria das trocas de dois dígitos vizinhos (a
exceção clássica é a troca de 09 por 90). É por
isso que o DV é tão útil em formulários: barra o erro na hora, sem
precisar de uma consulta externa.
O que ele não prova
Aqui está o ponto que mais causa confusão: um número com DV correto não é um documento que existe. Ele só passou numa conta.
- Existência: como cada DV tem cerca de um décimo de chance de acertar por acaso, um número de onze dígitos escolhido ao acaso passa na validação do CPF em torno de 1 vez em cada 100. Ou seja, a maior parte dos números "válidos" nunca foi emitida para ninguém.
- Titularidade e situação: o DV não diz de quem é o número, se a pessoa está viva, se o CNPJ está ativo ou se o cartão tem limite. Isso só se descobre consultando o órgão ou o emissor.
-
Sequências repetidas:
111.111.111-11passa na conta do CPF (o DV calculado para nove dígitos 1 é 1 e 1), mas não é um CPF real; por isso bons validadores rejeitam esses casos como regra adicional.
Consequências práticas para quem desenvolve
Valide o DV no formulário para dar retorno imediato ao usuário, mas trate isso como uma checagem de digitação, nunca como prova de identidade. Para saber se um documento é de fato daquela pessoa, é preciso uma fonte oficial ou um serviço autorizado. E, do outro lado, quando você precisa de números para testar seu sistema, um gerador que respeita o algoritmo (como o gerador de CPF) produz dados que atravessam a validação sem usar documentos de pessoas reais. O guia Como testar sistemas sem usar dados reais de clientes aprofunda essa prática.