נפתרה: Fernet%3A לא ניתן לפענח מחרוזות שנשמרו ב-csv עם פנדות

העדכון אחרון: 09/11/2023

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' על העמודה המוצפנת של מסגרת הנתונים בשיטת 'החל' ואחסן את הנתונים המפוענחים בעמודה חדשה. שים לב שאתה צריך להעביר את המפתח כארגומנט נוסף בשיטת 'החל':

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

ספריית פרנט

Fernet היא ספריית קריפטוגרפיה פופולרית בפייתון המספקת שיטות קלות לשימוש להצפנה ופענוח נתונים באמצעות קריפטוגרפיה סימטרית של מפתח AES. הספרייה מבטיחה שלא ניתן יהיה לטפל או לקרוא נתונים המוצפנים באמצעות Fernet ללא המפתח, ובכך להבטיח סודיות ושלמות נתונים. Fernet משתמשת בקידוד URL-safe/base64 עבור טקסטים מוצפנים, מה שהופך אותה למתאימה לאחסון נתונים מוצפנים בקבצים או מסדי נתונים.

ספריית פנדה

Pandas היא ספריית קוד פתוח לניהול וניתוח נתונים בפייתון. היא מספקת מבני נתונים, כגון סדרות ו-DataFrame, ופונקציות שונות לטיפול, טרנספורמציה ויזואליזציה של נתונים. Pandas שימושית במיוחד לעבודה עם נתונים מובנים או טבלאיים, כגון קבצי CSV או מסדי נתונים של SQL. ספרייה זו מפשטת היבטים רבים של מניפולציה של נתונים, מה שהופך אותה לכלי חיוני לניתוח נתונים ולמידת מכונה.

לסיכום, פענוח מחרוזות מוצפנות שנשמרו בקובץ CSV באמצעות Fernet ו-Pandas ניתן להשיג על ידי ביצוע השלבים המפורטים במאמר זה. על ידי יצירת פונקציית פענוח מותאמת אישית והחלתה על מסגרת הנתונים, נוכל לפענח ביעילות את הנתונים הרגישים המאוחסנים בקובץ ה-CSV.

הודעות קשורות: