Fernet é uma biblioteca de criptografia simétrica em Python que fornece criptografia segura e fácil de usar para dados confidenciais. Um caso de uso comum para Fernet é criptografar dados antes de armazená-los em um arquivo CSV, garantindo que apenas pessoas autorizadas possam acessá-los. No entanto, descriptografar essas strings criptografadas em um arquivo CSV pode ser um pouco complicado, especialmente ao usar a biblioteca Pandas.
Neste artigo, discutiremos uma solução para o problema de descriptografar strings salvas em um arquivo CSV usando Fernet e Pandas. Forneceremos uma explicação passo a passo do código e nos aprofundaremos nas funções e bibliotecas relevantes envolvidas no processo.
Para começar, vamos discutir o problema em detalhes. Ao usar a criptografia Fernet para proteger os dados antes de armazená-los em um arquivo CSV, pode ser difícil descriptografar os dados de volta ao usar o Pandas para ler o arquivo. As strings criptografadas requerem tratamento adequado para garantir sua integridade durante a descriptografia.
Solução para o problema
Uma possível solução para esse problema é usar funções personalizadas e aplicá-las ao dataframe obtido do arquivo CSV. Vamos criar uma função para descriptografar as strings criptografadas usando a biblioteca Fernet e, em seguida, aplicar essa função ao dataframe do Pandas que contém os dados criptografados.
Aqui está uma explicação passo a passo do código:
1. Primeiro, precisamos importar as bibliotecas necessárias:
import pandas as pd from cryptography.fernet import Fernet
2. Em seguida, vamos gerar uma chave Fernet e criptografar alguns dados de amostra. Suponha que criptografamos os seguintes dados e os salvamos em um arquivo CSV chamado “encrypted_data.csv” com duas colunas “data” e “encrypted”:
key = Fernet.generate_key() cipher_suite = Fernet(key) data = "This is a sample text." encrypted_data = cipher_suite.encrypt(data.encode("utf-8"))
3. Agora, vamos criar uma função para descriptografar as strings criptografadas com a chave Fernet fornecida:
def decrypt_string(encrypted_string, fernet_key): cipher_suite = Fernet(fernet_key) return cipher_suite.decrypt(encrypted_string.encode("utf-8")).decode("utf-8")
4. Podemos ler o arquivo CSV contendo dados criptografados usando Pandas:
csv_data = pd.read_csv('encrypted_data.csv')
5. Por fim, aplique a função 'decrypt_string' à coluna criptografada do quadro de dados usando o método 'apply' e armazene os dados descriptografados em uma nova coluna. Observe que você precisa passar a chave como um argumento adicional no método 'apply':
csv_data['decrypted'] = csv_data['encrypted'].apply(decrypt_string, fernet_key=key)
Biblioteca Fernet
Fernet é uma biblioteca criptográfica popular em Python que fornece métodos fáceis de usar para criptografar e descriptografar dados com criptografia de chave simétrica AES. A biblioteca garante que os dados criptografados usando Fernet não possam ser manipulados ou lidos sem a chave, garantindo a confidencialidade e integridade dos dados. Fernet usa codificação URL-safe/base64 para textos cifrados, o que o torna adequado para armazenar dados criptografados em arquivos ou bancos de dados.
Biblioteca de pandas
Pandas é uma biblioteca de manipulação e análise de dados de código aberto em Python. Ele fornece estruturas de dados, como Series e DataFrame, e várias funções para manipulação, transformação e visualização de dados. O Pandas é particularmente útil para trabalhar com dados estruturados ou tabulares, como arquivos CSV ou bancos de dados SQL. Essa biblioteca simplifica muitos aspectos da manipulação de dados, tornando-a uma ferramenta essencial para análise de dados e aprendizado de máquina.
Em conclusão, a descriptografia de strings criptografadas salvas em um arquivo CSV usando Fernet e Pandas pode ser realizada seguindo as etapas fornecidas neste artigo. Ao criar uma função de descriptografia personalizada e aplicá-la ao dataframe, podemos descriptografar efetivamente os dados confidenciais armazenados no arquivo CSV.