catbean.pages.dev

Como detectar CPFs clonados em uma base de dados?

Detectar CPFs clonados em uma base de dados pode ser uma tarefa desafiadora, especialmente quando se lida com grandes volumes de dados. Felizmente, existe um método simples e eficaz que utiliza a validação do dígito verificador do CPF para identificar inconsistências. Este método é baseado no algoritmo oficial do CPF e pode ser implementado facilmente usando uma fórmula do Excel ou um script em Python.

Pré-requisitos

Solução com Fórmula do Excel

A fórmula abaixo valida o dígito verificador do CPF e retorna "Válido" ou "Inválido".

=SE(E(CARACT(ESQUERDA(A1;9))="000000000";CARACT(ESQUERDA(A1;9))="111111111";CARACT(ESQUERDA(A1;9))="222222222";CARACT(ESQUERDA(A1;9))="333333333";CARACT(ESQUERDA(A1;9))="444444444";CARACT(ESQUERDA(A1;9))="555555555";CARACT(ESQUERDA(A1;9))="666666666";CARACT(ESQUERDA(A1;9))="777777777";CARACT(ESQUERDA(A1;9))="888888888";CARACT(ESQUERDA(A1;9))="999999999");"Inválido";SE(E(DIGITOVERIFICADOR(A1;1)=MÉDIO(A1;10;1);DIGITOVERIFICADOR(A1;2)=MÉDIO(A1;11;1));"Válido";"Inválido"))

Solução com Script Python

O script abaixo lê uma lista de CPFs e imprime apenas os que são válidos.

def validar_cpf(cpf):
    cpf = ''.join(filter(str.isdigit, cpf))
    if len(cpf) != 11:
        return False
    if cpf in [s * 11 for s in map(str, range(10))]:
        return False
    def calculo_digito(seq):
        soma = sum((len(seq) + 1 - i) * int(n) for i, n in enumerate(seq))
        return 11 - (soma % 11) if soma % 11 > 1 else 0
    if calculo_digito(cpf[:9]) == int(cpf[9]) and calculo_digito(cpf[:10]) == int(cpf[10]):
        return True
    return False

# Exemplo de uso
cpfs = ['12345678909', '11111111111', '40312143831']
for cpf in cpfs:
    if validar_cpf(cpf):
        print(f'{cpf} é válido')
    else:
        print(f'{cpf} é inválido')

Exemplo Prático

CPF Resultado
12345678909 Inválido
40312143831 Válido
11111111111 Inválido
22222222222 Inválido

Conclusão

Com este método, você automatiza a tarefa de detectar CPFs clonados em segundos, evitando erros manuais e garantindo a integridade dos dados da sua base de dados.