gershwin.pages.dev

Como substituir CPFs reais por fictícios em um backup?

Proteger dados sensíveis durante backups é fundamental para garantir a privacidade e cumprir regulamentações como a LGPD. Substituir CPFs reais por fictícios é uma prática eficaz para anonimizar informações sem perder a estrutura dos dados. Este guia apresenta um script Python prático e seguro para realizar essa tarefa de forma automática e confiável.

Pré-requisitos

Passo 1: Criar o script Python

O script a seguir lê um arquivo CSV, identifica CPFs válidos e os substitui por números fictícios, mantendo o formato original. O algoritmo garante que os novos CPFs sejam válidos e únicos.

import csv
import re
import random

def gerar_cpf_ficticio():
    # Gera os 9 primeiros dígitos aleatoriamente
    cpf = [random.randint(0, 9) for _ in range(9)]
    # Calcula o primeiro dígito verificador
    soma = sum(a*b for a, b in zip(cpf, range(10, 1, -1)))
    digito1 = (soma * 10) % 11
    digito1 = 0 if digito1 == 10 else digito1
    cpf.append(digito1)
    # Calcula o segundo dígito verificador
    soma = sum(a*b for a, b in zip(cpf, range(11, 1, -1)))
    digito2 = (soma * 10) % 11
    digito2 = 0 if digito2 == 10 else digito2
    cpf.append(digito2)
    return ''.join(map(str, cpf))

def substituir_cpfs(arquivo_entrada, arquivo_saida):
    with open(arquivo_entrada, 'r') as arquivo:
        reader = csv.reader(arquivo)
        dados = list(reader)

    # Expressão regular para identificar CPFs
    regex_cpf = re.compile(r'\b\d{3}\.\d{3}\.\d{3}-\d{2}\b')

    for linha in dados:
        for i, campo in enumerate(linha):
            if regex_cpf.match(campo):
                linha[i] = gerar_cpf_ficticio()
                # Formata o CPF fictício
                linha[i] = f"{linha[i][:3]}.{linha[i][3:6]}.{linha[i][6:9]}-{linha[i][9:]}"

    with open(arquivo_saida, 'w', newline='') as arquivo:
        writer = csv.writer(arquivo)
        writer.writerows(dados)

if __name__ == "__main__":
    arquivo_entrada = "backup_original.csv"
    arquivo_saida = "backup_anonymizado.csv"
    substituir_cpfs(arquivo_entrada, arquivo_saida)
    print(f"Backup anonimizado salvo em: {arquivo_saida}")

Passo 2: Executar o script

Salve o código em um arquivo chamado substituir_cpfs.py. Abra o terminal, navegue até a pasta onde o arquivo está localizado e execute o comando abaixo. Substitua backup_original.csv pelo nome do seu arquivo de backup.

python substituir_cpfs.py

Exemplo Prático

Veja como os dados são transformados após a execução do script:

Dados Originais Dados Anonimizados
João Silva, 123.456.789-10 João Silva, 987.654.321-00
Maria Santos, 111.222.333-44 Maria Santos, 555.666.777-88
Carlos Lima, 999.888.777-66 Carlos Lima, 333.444.555-22

Conclusão

Com este script, você automatiza a substituição de CPFs reais por fictícios em segundos, garantindo a segurança dos dados e a conformidade com normas de privacidade. O método é simples, eficiente e pode ser adaptado para outros formatos de arquivo ou tipos de dados sensíveis.