4

Como funciona um gerador de CPF (apenas o conceito)

As pessoas vem reclamando que no TabNews não tem posts técnicos, então resolvi fazer um só para testar a recepção

A Anatomia de um CPF

Um CPF tem uma anatomia bem simples: ABC.DEF.GHR-XY

Explicando a notação:

DígitoSignificado
A-HSão número aleatórios de 0 a 9 cada letra
RA região de emissão do CPF
XÉ o primeiro dígito verificador
YÉ o segundo dígito verificador

Para R os valores estão abaixo

Dígito RSignificado
0Rio Grande do Sul
1Distrito Federal, Goiás, Mato Grosso, Mato Grosso do Sul, Tocantins
2Pará, Amazonas, Acre, Amapá, Rondônia, Roraima
3Ceará, Maranhão, Piauí
4Pernambuco, Rio Grande do Norte, Paraíba, Alagoas
5Bahia, Sergipe
6Minas Gerais
7Rio de Janeiro, Espírito Santo
8São Paulo
9Paraná, Santa Catarina

Regras

  • Os primeiros nove dígitos não podem ser iguais, na prática isso significa que se R for 6, ao menos 1 dígito A precisa ser diferente de 6

  • X e Y são calculados

Cálculo de X

  1. Multiplique os valores de 10 até 2 em ordem: (A×10)+(B×9)+(C×8)+(D×7)+(E×6)+(F×5)+(G×4)+(H×3)+(R×2)

  2. Divide a soma do passo 1 por 11

  3. Analise o resultado

    • Se o resto da divisão for 0 ou 1, X será 0
    • Caso contrário será 11 − resto

Cálculo de Y

  1. É basicamente o mesmo cálculo mas com X também, então de 11 a 2: (A×11)+(B×10)+(C×9)+(D×8)+(E×7)+(F×6)+(G×5)+(H×4)+(R×3)+(X×2)

  2. Divide a soma do passo 1 por 11

  3. Analise o resultado

    • Se o resto da divisão for 0 ou 1, Y será 0
    • Caso contrário será 11 − resto

Resumo

  1. Escolhe um número de 0 a 9 chamamos de R
  2. Escolhe 8 digitos de 0 a 9 sendo pelo menos um deles diferentes de R
  3. Coloque os 8 dígitos antes de R
  4. Calcule X e coloque após R
  5. Calcule Y e coloque após X

Conclusão

Parece uma coisa meio simples e até inútil mas saber disso funciona para gerar qualquer padrão de identificador você pode usar o mesmo pincípio para identificar de que cidade é um cliente do seu SaaS usando esse algoritmos, inclusive, para saber por qual número dividir é só ver o tamanho do identificador (não é obrigatório mas facilita), e claro isso não mostra que o registro existe, só que é matematicamente válido

Carregando publicação patrocinada...
1

Trabalhei com testes de software por muitos anos e vou deixar aqui uma dica pra quem precisa de CPFs para testes:
Você pode colocar uma sequência de 3 números em qualquer posição do CPF/CNPJ e completar o restante com zeros. O requisito é que essa sequência de 3 números some 11 e que o primeiro e último sejam iguais: 191, 272, 353, 434, 515.

Vejamos alguns exemplos:
19100000000
01910000000
00000001910
00000272000
00000000434

Com isso, você terá pelo menos 45 CPFs de teste.

IMPORTANTE: sim, alguns desses CPFs além de serem válidos, estão ativos e correspondem a pessoas reais. Use com responsabilidade.

1

Confesso que não sabia que um dos dígitos representava a região onde foi emitida, apesar de eu já ter feito o cálculo de validação dos dígitos verificadores várias vezes.

Sobre parecer inútil, eu considero como algo importante a parte de validação, até mesmo para um frontend, para impedir que a pessoa insira CPFs numericamente inválidos. Serve até mesmo como trava para casos de digitação de um número errado no meio da sequência do CPF (isso já aconteceu comigo uma vez em um cadastro que fui fazer em uma plataforma, por minha falta de atenção).