Løst: Fernet%3A Kan ikke dekryptere strenge gemt i csv med pandaer

Fernet er et symmetrisk krypteringsbibliotek i Python, der giver sikker og brugervenlig kryptering til følsomme data. En almindelig brugssag for Fernet er at kryptere data, før de lagres i en CSV-fil, hvilket sikrer, at kun autoriserede parter kan få adgang til dem. Det kan dog være lidt vanskeligt at dekryptere disse krypterede strenge i en CSV-fil, især når du bruger Pandas-biblioteket.

I denne artikel vil vi diskutere en løsning på problemet med at dekryptere strenge gemt i en CSV-fil ved hjælp af Fernet og Pandas. Vi vil give en trin-for-trin forklaring af koden og dykke ned i de relevante funktioner og biblioteker, der er involveret i processen.

Til at begynde med, lad os diskutere problemet i detaljer. Når du bruger Fernet-kryptering til at sikre data, før du gemmer dem i en CSV-fil, kan det være en udfordring at dekryptere dataene tilbage, mens du bruger Pandas til at læse filen. De krypterede strenge kræver korrekt håndtering for at sikre deres integritet under dekryptering.

Løsning på problemet

En potentiel løsning på dette problem er at bruge brugerdefinerede funktioner og anvende dem på datarammen hentet fra CSV-filen. Vi vil oprette en funktion til at dekryptere de krypterede strenge ved hjælp af Fernet-biblioteket, og derefter anvende denne funktion på Pandas-datarammen, der indeholder de krypterede data.

Her er en trin-for-trin forklaring af koden:

1. Først skal vi importere de nødvendige biblioteker:

import pandas as pd
from cryptography.fernet import Fernet

2. Lad os derefter generere en Fernet-nøgle og kryptere nogle eksempeldata. Antag, at vi har krypteret følgende data og gemt dem i en CSV-fil med navnet "encrypted_data.csv" med to kolonner "data" og "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. Lad os nu oprette en funktion til at dekryptere de krypterede strenge med den givne Fernet-nøgle:

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. Vi kan læse CSV-filen, der indeholder krypterede data ved hjælp af Pandas:

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

5. Anvend endelig 'decrypt_string'-funktionen til den krypterede kolonne i datarammen ved hjælp af 'apply'-metoden og gem de dekrypterede data i en ny kolonne. Bemærk, at du skal sende nøglen som et ekstra argument i 'anvend'-metoden:

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

Fernet bibliotek

Fernet er et populært kryptografisk bibliotek i Python, der giver brugervenlige metoder til kryptering og dekryptering af data med AES symmetrisk nøglekryptografi. Biblioteket garanterer, at data krypteret ved hjælp af Fernet ikke kan manipuleres eller læses yderligere uden nøglen, hvilket sikrer datafortrolighed og integritet. Fernet bruger URL-safe/base64-kodning til chiffertekster, hvilket gør den velegnet til lagring af krypterede data i filer eller databaser.

Pandas bibliotek

pandas er et open source-datamanipulations- og dataanalysebibliotek i Python. Det giver datastrukturer, såsom Series og DataFrame, og forskellige funktioner til håndtering, transformation og visualisering af data. Pandas er især nyttigt til at arbejde med strukturerede eller tabelformede data, såsom CSV-filer eller SQL-databaser. Dette bibliotek forenkler mange aspekter af datamanipulation, hvilket gør det til et vigtigt værktøj til dataanalyse og maskinlæring.

Afslutningsvis kan dekryptering af krypterede strenge gemt i en CSV-fil ved hjælp af Fernet og Pandas opnås ved at følge trinene i denne artikel. Ved at oprette en brugerdefineret dekrypteringsfunktion og anvende den på datarammen, kan vi effektivt dekryptere de følsomme data, der er gemt i CSV-filen.

Relaterede indlæg:

Efterlad en kommentar