Opgelost: Fernet%3A Kan strings die zijn opgeslagen in csv niet decoderen met panda's

Laatste update: 09/11/2023

Fernet is een symmetrische coderingsbibliotheek in Python die veilige en gebruiksvriendelijke codering biedt voor gevoelige gegevens. Een veelvoorkomende use-case voor Fernet is om gegevens te versleutelen voordat ze in een CSV-bestand worden opgeslagen, zodat alleen geautoriseerde partijen er toegang toe hebben. Het ontsleutelen van deze versleutelde strings in een CSV-bestand kan echter een beetje lastig zijn, vooral als je de Panda-bibliotheek gebruikt.

In dit artikel bespreken we een oplossing voor het probleem van het decoderen van tekenreeksen die zijn opgeslagen in een CSV-bestand met behulp van Fernet en Panda's. We zullen een stapsgewijze uitleg van de code geven en ingaan op de relevante functies en bibliotheken die bij het proces betrokken zijn.

Laten we om te beginnen het probleem in detail bespreken. Wanneer u Fernet-codering gebruikt om gegevens te beveiligen voordat u deze in een CSV-bestand opslaat, kan het een uitdaging zijn om de gegevens terug te decoderen terwijl u Panda's gebruikt om het bestand te lezen. De versleutelde tekenreeksen moeten op de juiste manier worden behandeld om hun integriteit tijdens de ontsleuteling te waarborgen.

Oplossing voor het probleem

Een mogelijke oplossing voor dit probleem is om aangepaste functies te gebruiken en deze toe te passen op het dataframe dat is verkregen uit het CSV-bestand. We zullen een functie maken om de versleutelde strings te ontsleutelen met behulp van de Fernet-bibliotheek en deze functie vervolgens toepassen op het Pandas-dataframe dat de versleutelde gegevens bevat.

Hier is een stapsgewijze uitleg van de code:

1. Eerst moeten we de benodigde bibliotheken importeren:

import pandas as pd
from cryptography.fernet import Fernet

2. Laten we vervolgens een Fernet-sleutel genereren en enkele voorbeeldgegevens versleutelen. Stel dat we de volgende gegevens hebben versleuteld en opgeslagen in een CSV-bestand met de naam "encrypted_data.csv" met twee kolommen "data" en "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. Laten we nu een functie maken om de versleutelde strings te decoderen met de gegeven Fernet-sleutel:

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. We kunnen het CSV-bestand met versleutelde gegevens lezen met behulp van Panda's:

csv_data = pd.read_csv('encrypted_data.csv')

5. Pas ten slotte de functie 'decrypt_string' toe op de versleutelde kolom van het dataframe met behulp van de methode 'apply' en sla de ontsleutelde gegevens op in een nieuwe kolom. Merk op dat u de sleutel moet doorgeven als een extra argument in de methode 'toepassen':

csv_data['decrypted'] = csv_data['encrypted'].apply(decrypt_string, fernet_key=key)

Fernet-bibliotheek

Fernet is een populaire cryptografische bibliotheek in Python die gebruiksvriendelijke methoden biedt voor het coderen en decoderen van gegevens met AES symmetrische sleutelcryptografie. De bibliotheek garandeert dat gegevens die zijn versleuteld met Fernet niet verder kunnen worden gemanipuleerd of gelezen zonder de sleutel, waardoor de vertrouwelijkheid en integriteit van gegevens wordt gegarandeerd. Fernet gebruikt URL-safe/base64-codering voor cijferteksten, waardoor het geschikt is voor het opslaan van versleutelde gegevens in bestanden of databases.

Panda's Bibliotheek

Pandas is een open-source bibliotheek voor gegevensmanipulatie en gegevensanalyse in Python. Het biedt datastructuren, zoals Series en DataFrame, en verschillende functies voor het verwerken, transformeren en visualiseren van data. Panda's is vooral handig voor het werken met gestructureerde of tabelgegevens, zoals CSV-bestanden of SQL-databases. Deze bibliotheek vereenvoudigt veel aspecten van gegevensmanipulatie, waardoor het een essentiële tool wordt voor gegevensanalyse en machine learning.

Concluderend, het ontsleutelen van versleutelde tekenreeksen die zijn opgeslagen in een CSV-bestand met behulp van Fernet en Panda's kan worden bereikt door de stappen in dit artikel te volgen. Door een aangepaste decoderingsfunctie te maken en deze toe te passen op het dataframe, kunnen we de gevoelige gegevens die zijn opgeslagen in het CSV-bestand effectief decoderen.

Gerelateerde berichten: