Python  1.0
Functions
_05b_cpf Namespace Reference

CPF validation. More...

Functions

def areValidDigits (cpf, dv)
 Validates a CPF using the verification digits (DV). More...
 
def main (argv=None)
 

Detailed Description

CPF validation.

Some valid cpfs:

  1. 757.331.783-29
  2. 841.315.629-79
  3. 635.111.771-20
  4. 348.536.715-01

Para exemplificar o processo de validação, serão calculados os dígitos verificadores de um CPF hipotético, 111.444.777-XX.

Calculando o Primeiro Dígito Verificador.

O primeiro dígito verificador do CPF é calculado utilizando-se o seguinte algoritmo:

  1. Distribua os 9 primeiros dígitos em um quadro colocando os pesos 10, 9, 8, 7, 6, 5, 4, 3, 2,
    da esquerda para a direita, conforme indicado abaixo:
            1       1       1       4       4       4       7       7       7
            10      9       8       7       6       5       4       3       2
       
  2. Multiplique os valores de cada coluna:
            1       1       1       4       4       4       7       7       7
            10      9       8       7       6       5       4       3       2
            10      9       8       28      24      20      28      21      14
       
  3. Calcule o somatório dos resultados (10+9+...+21+14) = 162.
  4. O resultado obtido (162) será divido por 11.
    O resto da divisão indicará o primeiro dígito verificador: 162 % 11 = 8.

Se o resto da divisão for menor do que 2, o primeiro dígito verificador se torna zero.
Caso contrário, subtraia o valor obtido de 11, para obter o primeiro dígito verificador: 11-8 = 3.
Portanto, o CPF até agora está assim: 111.444.777-3X.

Calculando o Segundo Dígito Verificador

Para o cálculo do segundo dígito, será usado o primeiro dígito verificador já encontrado:

  1. Monte uma tabela semelhante à anterior, só que desta vez usando na segunda linha os valores
    11,10,9,8,7,6,5,4,3,2, já que foi incorporado mais um algarismo ao cálculo.
            1       1       1       4       4       4       7       7       7       3
            11      10      9       8       7       6       5       4       3       2
       
  2. Multiplique os valores de cada coluna e efetue o somatório dos resultados obtidos: (11+10+...+21+6) = 204.
            1       1       1       4       4       4       7       7       7       3
            11      10      9       8       7       6       5       4       3       2
            11      10      9       32      28      24      35      28      21      6
       
  3. Divida o total do somatório por 11 e considere o resto da divisão: 204 % 11 = 6.
  4. Se o resto da divisão for menor do que 2, o segundo dígito verificador se torna zero.
    Caso contrário, é necessário subtrair o valor obtido de 11, para gerar o segundo dígito verificador: 11-6 = 5.

Ao final dos cálculos, descobre-se que os dígitos verificadores do CPF hipotético são os números 3 e 5.
Portanto, o CPF completo é: 111.444.777-35.

Author
Paulo Roma
Since
30/12/2008
See also
http://www.geradorcpf.com/

Function Documentation

◆ areValidDigits()

def _05b_cpf.areValidDigits (   cpf,
  dv 
)

Validates a CPF using the verification digits (DV).

Parameters
cpfCPF.
dvverification digits.
Returns
True if the cpf is valid, and False otherwise.
See also
https://docs.python.org/3/library/operator.html

References _03e_multiply.dotProd(), and _01f_getDigit.getDigit().

Referenced by main().

◆ main()

def _05b_cpf.main (   argv = None)