Decifrando o Algoritmo do CNPJ
O CNPJ é composto por quatorze algarismos, divididos em três blocos:
- o primeiro, que representa o número da inscrição propriamente dito;
- o segundo, localizado após a barra, que representa um código único para a matrix ou filial;
- o terceiro, representados pelos dois últimos valores chamados de dígitos verificadores (DV).
Os dígitos verificadores (DV) são criados a partir dos doze primeiros. O cálculo é feito em duas etapas utilizando o módulo de divisão 11.
Para exemplificar o processo e tornar mais fácil a explicação vamos calcular os dígitos verificadores de um CNPJ hipotético, por exemplo, 11.444.777/0001-XX.
Calculando o Primeiro Dígito Verificador
O primeiro dígito é calculado utilizando-se o seguinte algoritmo.
1) Distribua os 12 primeiros dígitos em um quadro colocando os pesos 5,4,3,2,9,8,7,6,5,4,3,2 abaixo da esquerda para a direita, conforme representação abaixo:
1 | 1 | 4 | 4 | 4 | 7 | 7 | 7 | 0 | 0 | 0 | 1 |
5 | 4 | 3 | 2 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
2) Multiplique os valores de cada coluna:
1 | 1 | 4 | 4 | 4 | 7 | 7 | 7 | 0 | 0 | 0 | 1 |
5 | 4 | 3 | 2 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
5 | 4 | 12 | 8 | 36 | 56 | 49 | 42 | 0 | 0 | 0 | 2 |
3) Calcule o somatório dos resultados (5+4+...+0+2) = 214
4) O resultado obtido (214) será divido por 11. Considere como quociente apenas o valor inteiro, o resto da divisão será responsável pelo cálculo do primeiro dígito verificador.
Vamos acompanhar: 214 dividido por 11 obtemos 19 como quociente e 5 como resto da divisão. Caso o resto da divisão seja menor que 2, o nosso primeiro dígito verificador se torna 0 (zero), caso contrário subtrai-se o valor obtido de 11, que é nosso caso. Sendo assim nosso dígito verificador é 11-5, ou seja, 6 (seis).
Já temos portanto parte do CNPJ, confira: 11.444.777/0001-6X.
Calculando o Segundo Dígito Verificador
1) Para o cálculo do segundo dígito será usado o primeiro dígito verificador já calculado. Montaremos uma tabela semelhante a anterior só que desta vez usaremos na segunda linha os valores 6,5,4,3,2,9,8,7,6,5,4,3,2 já que estamos incorporando mais um algarismo para esse cálculo. Veja:
1 | 1 | 4 | 4 | 4 | 7 | 7 | 7 | 0 | 0 | 0 | 1 | 6 |
6 | 5 | 4 | 3 | 2 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
2) Na próxima etapa faremos como na situação do cálculo do primeiro dígito verificador, multiplicaremos os valores de cada coluna e efetuaremos o somatório dos resultados obtidos: (6+5+...+3+12) = 221.
1 | 1 | 4 | 4 | 4 | 7 | 7 | 7 | 0 | 0 | 0 | 1 | 6 |
6 | 5 | 4 | 3 | 2 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
6 | 5 | 16 | 12 | 8 | 63 | 56 | 49 | 0 | 0 | 0 | 3 | 12 |
3) Realizamos novamente o cálculo do módulo 11. Dividimos o total do somatório por 11 e consideramos o resto da divisão.
Vamos acompanhar: 230 dividido por 11 obtemos 20 como quociente e 10 como resto da divisão.
4) Caso o valor do resto da divisão seja menor que 2, esse valor passa automaticamente a ser zero, caso contrário (como no nosso exemplo) é necessário subtrair o valor obtido de 11 para se obter o dígito verificador, como realizado no cálculo do primeiro dígito. Logo, 11-10 = 1 é o nosso segundo dígito verificador.
Chegamos ao final dos cálculos e descobrimos que os dígitos verificadores do nosso CNPJ hipotético são os números 6 e 1, portanto o CNPJ ficaria assim: 11.444.777/0001-61.
O gerador de cnpj apresentado neste site funciona com base neste algoritmo. A rotina de gerar CNPJ 's válidos, inicialmente sorteia 9 números. Calcula-se o 1o dígito verificador e integra-se o mesmo aos 9 números iniciais. Prossegue-se com o cálculo do segundo dígito verificador como ensinado. Ao final, o criador de CNPJ emite um número de CNPJ válido.
A geração de CPF's válidos funciona de maneira análoga. Caso seja do seu interesse, consulte mais informações sobre o algoritmo do cpf.
Implementação do Algoritmo do CNPJ