Algoritmo de validação de CPF



O CPF (Cadastro de Pessoa Física) é o documento de identificação do contribuinte perante a Receita Federal, o mesmo é formado por 11 algarismos, onde os dois últimos são chamados de dígitos verificadores e gerados a partir dos 9 primeiros algarismos da seqüência, em um processo que é dividido em duas etapas utilizando o modulo de divisão por 11.

Para demonstrar o processo, vamos utilizar o CPF imaginário 123.456.789-XX.

Etapa 1: Calculo do primeiro digito



O primeiro dígito verificador é calculado multiplicando os primeiros 9 algarismos, pela seqüência 10, 9, 8, 7, 6, 5, 4, 3 e 2, em seguida serão somados os resultados e depois dividido por 11, como exemplificado na tabela abaixo:

Número do CPF 1 2 3 4 5 6 7 8 9
Algarismo de Multiplicação 10 9 8 7 6 5 4 3 2
Resultado da Multiplicação 10 18 24 28 30 30 28 24 18
Somatória 210                
Divisão 19,09                

Como o resultado da divisão obtivemos 19 como valor inteiro e 0 como resto, agora vamos aplicar as regras abaixo para definir o nosso primeiro dígito.

Caso o resto da divisão for menor que 2, o nosso primeiro dígito verificador será 0, caso contrário subtrai-se o resto de 11, em nosso caso teremos 0 como nosso primeiro digito.

Etapa 2: Calculo do segundo digito



Na segunda etapa incorporamos o primeiro dígito no calculo, assim o CPF será multiplicado pela seqüência 11, 10, 9, 8, 7, 6, 5, 4, 3 e 2, que em seguida serão somados os resultados e depois dividido por 11, como realizado na primeira etapa, vejamos o exemplo abaixo:

Número do CPF 1 2 3 4 5 6 7 8 9 0
Algarismo de Multiplicação 11 10 9 8 7 6 5 4 3 2
Resultado da Multiplicação 11 20 27 32 35 36 35 32 27 0
Somatória 255                  
Divisão 23,18                  

Como o resultado da divisão obtivemos 23 como valor inteiro e 2 como resto, agora vamos aplicar as regras abaixo para definir o segundo dígito.

Caso o resto da divisão for menor que 2, o nosso primeiro dígito verificador será 0, caso contrário subtrai-se o resto de 11, em nosso caso teremos 11-2, então nosso segundo verificador dígito é 9.

Com as duas etapas aplicadas temos como resultado final o CPF hipotético: 123.456.789-09