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.
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"))
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')
| CPF | Resultado |
|---|---|
| 12345678909 | Inválido |
| 40312143831 | Válido |
| 11111111111 | Inválido |
| 22222222222 | Inválido |
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.