A fórmula para criar um CPF
Quem trabalha com desenvolvimento de sistemas, não raramente se depara com a necessidade de obter números de CPFs válidos para fazer testes de software. Diante desse cenário, no entanto, muitos equivocadamente deixam de recorrer a um bom algoritmo do CPF.
Fórmula do CPF consoante à validação – Primeiro dígito
Antes de qualquer coisa, devemos notar que o cálculo para validação de um número de CPF é determinado pelo próprio Ministério da Fazenda. O órgão é o responsável pelos cadastros de pessoas jurídicas.
Dito isso, devemos notar que um documento como o CPF é composto por 11 números, considerando dígitos. Estes números obedecem a já mencionada máscara “###.###.###-##”, todavia, para que se chegue à validade do mesmo a verificação utiliza os 9 primeiros números.
Agora, falando do processo em si, podemos dizer que ele é feito por meio de um cálculo simples. Para perfeita compreensão, tomamos emprestado um exemplo onde o CPF fictício tem a seguinte numeração: 529.982.247-25.
Nesse caso, para a validação do primeiro dígito é preciso que se faça uma multiplicação dos 9 primeiros números por meio da sequência decrescente de 10 à 2 e se some os valores resultantes.
O exemplo nesse caso fica assim:
5 | 2 | 9 | 9 | 8 | 2 | 2 | 4 | 7 |
10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
5 * 10 + 2 * 9 + 9 * 8 + 9 * 7 + 8 * 6 + 2 * 5 + 2 * 4 + 4 * 3 + 7 * 2
Em consequência, o resultado é 295.
Segunda etapa da validação do primeiro dígito
Assim como no primeiro exemplo, o segundo passo da fórmula do CPF também é bastante simples. Nesse caso, é preciso que se multiplique o resultado obtido por 10 e na sequência o divida por 11.
O exemplo fica assim:
295 * 10 / 11
Vale notar, no entanto, que o resultado útil para a fórmula nesse caso será o RESTO do que foi dividido. No caso dele ser igual ao primeiro dígito verificador, que é aquele depois do “-“, significa que a primeira parte do processo está certo.
É importante ressaltar, no entanto, que quando o resto do que foi dividido é igual a 10 é preciso considerá-lo como 0.
Voltando para o exemplo com o qual temos trabalhado, temos então os seguintes fatos:
O valor resultante da divisão é “268” e o RESTO é 2.
Na prática isso representa que o número de CPF fictício que citamos no início foi validado no que diz respeito ao seu primeiro dígito.
Validação do segundo dígito
Depois de validado o primeiro dígito, é hora de determinar a validade do segundo. O processo é bastante similar, só que ainda mais simples, pois a fórmula do CPF aqui é trabalhada a partir do primeiro dígito já verificado.
Nesse caso, é preciso considerar os 9 primeiros dígitos junto do primeiro dígito verificador. Depois disso multiplica-se os 10 números pela se sequência decrescente partindo de 11 a 2. No exemplo com o qual trabalhamos a coisa fica assim:
5 | 2 | 9 | 9 | 8 | 2 | 2 | 4 | 7 | 2 |
11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
5 * 11 + 2 * 10 + 9 * 9 + 9 * 8 + 8 * 7 + 2 * 6 + 2 * 5 + 4 * 4 + 7 * 3 + 2 * 2
Diante disso, podemos obter o 347 como resultado.
A partir daí, basta levar em consideração o processo da primeira verificação, onde o resultado é multiplicado por 10 e dividido por 11. O exemplo então fica assim:
347 * 10 / 11
Levando em conta o que foi dito anteriormente, é preciso verificar o RESTO. Considerando que o resultado do que foi dividido é 315, o RESTO é 5.
Depois disso é preciso verificar se o resto é correspondente ao segundo dígito verificador. A partir dessa confirmação, então pode-se considerar o CPF como válido, que no caso é o número fictício 529.982.247-25.
Com o objetivo de gerar sempre CPFs válidos, nosso algoritmo do CPF aqui no gerador de CPF trabalha seguindo todas as diretrizes de validação.
É importante ressaltar, porém, que isso não significa que esse seja um CPF de uma pessoa real. O sistema gera apenas um número válido para finalidade de teste de softwares.
Isso acontece porque o caminho mais fácil seria lançar mão apenas de um modelo que atende a máscara “###.###.###-##”, onde ‘#’ representa um dígito.
O fato, porém, é que há uma regra matemática que precisa ser levada em consideração na hora de determinar se o número é válido.
Para ilustrar melhor isso, portanto, apresentamos aqui algumas das informações mais relevantes sobre isso para você implementar o algoritmo em alguma destas linguagens de programação: