Решено: Fernet%3A не може да дешифрира низове, записани в csv с pandas

Fernet е библиотека за симетрично криптиране в Python, която осигурява сигурно и лесно за използване криптиране за чувствителни данни. Един често срещан случай на използване на Fernet е криптиране на данни, преди да бъдат съхранени в CSV файл, като се гарантира, че само оторизирани страни имат достъп до тях. Въпреки това декриптирането на тези криптирани низове в CSV файл може да бъде малко трудно, особено когато се използва библиотека Pandas.

В тази статия ще обсъдим решение на проблема с дешифрирането на низове, записани в CSV файл, с помощта на Fernet и Pandas. Ще предоставим стъпка по стъпка обяснение на кода и ще се задълбочим в съответните функции и библиотеки, включени в процеса.

Като начало, нека обсъдим проблема подробно. Когато използвате Fernet криптиране за защита на данните, преди да ги съхраните в CSV файл, може да е предизвикателство да дешифрирате данните обратно, докато използвате Pandas за четене на файла. Шифрованите низове изискват правилно боравене, за да се гарантира тяхната цялост по време на декриптирането.

Решение на проблема

Потенциално решение на този проблем е използването на персонализирани функции и прилагането им към рамката с данни, получена от CSV файла. Ще създадем функция за декриптиране на шифрованите низове с помощта на библиотеката Fernet и след това ще приложим тази функция към рамката с данни на Pandas, съдържаща шифрованите данни.

Ето стъпка по стъпка обяснение на кода:

1. Първо, трябва да импортираме необходимите библиотеки:

import pandas as pd
from cryptography.fernet import Fernet

2. След това нека генерираме Fernet ключ и да шифроваме някои примерни данни. Да приемем, че сме шифровали следните данни и сме ги записали в CSV файл с име „encrypted_data.csv“ с две колони „данни“ и „шифровано“:

key = Fernet.generate_key()
cipher_suite = Fernet(key)
data = "This is a sample text."
encrypted_data = cipher_suite.encrypt(data.encode("utf-8"))

3. Сега нека създадем функция за декриптиране на шифрованите низове с дадения Fernet ключ:

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. Можем да прочетем CSV файла, съдържащ криптирани данни, използвайки Pandas:

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

5. Накрая приложете функцията 'decrypt_string' към криптираната колона на рамката с данни, като използвате метода 'apply' и съхранете декриптираните данни в нова колона. Имайте предвид, че трябва да предадете ключа като допълнителен аргумент в метода „прилагане“:

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

Библиотека Фернет

Фернет е популярна криптографска библиотека в Python, която предоставя лесни за използване методи за криптиране и декриптиране на данни с AES криптография със симетричен ключ. Библиотеката гарантира, че данните, криптирани с помощта на Fernet, не могат да бъдат допълнително манипулирани или прочетени без ключа, гарантирайки поверителността и целостта на данните. Fernet използва URL-safe/base64 кодиране за шифровани текстове, което го прави подходящ за съхраняване на криптирани данни във файлове или бази данни.

Библиотека Pandas

Пандите е библиотека с отворен код за обработка на данни и анализ на данни в Python. Той предоставя структури от данни, като Series и DataFrame, и различни функции за обработка, трансформиране и визуализиране на данни. Pandas е особено полезен за работа със структурирани или таблични данни, като CSV файлове или SQL бази данни. Тази библиотека опростява много аспекти на манипулирането на данни, което я прави основен инструмент за анализ на данни и машинно обучение.

В заключение, дешифрирането на шифровани низове, записани в CSV файл с помощта на Fernet и Pandas, може да бъде постигнато чрез следване на стъпките, предоставени в тази статия. Чрез създаването на персонализирана функция за декриптиране и прилагането й към рамката с данни, ние можем ефективно да дешифрираме чувствителните данни, съхранявани в CSV файла.

Подобни публикации:

Оставете коментар