已解決:Fernet%3A Cannot decrypt strings saved in csv with pandas

Fernet 是 Python 中的對稱加密庫,可為敏感數據提供安全且易於使用的加密。 Fernet 的一個常見用例是在將數據存儲到 CSV 文件之前對其進行加密,以確保只有授權方才能訪問它。 但是,解密 CSV 文件中的這些加密字符串可能有點棘手,尤其是在使用 Pandas 庫時。

在本文中,我們將討論使用 Fernet 和 Pandas 解密保存在 CSV 文件中的字符串問題的解決方案。 我們將提供代碼的逐步解釋,並深入研究過程中涉及的相關函數和庫。

首先,讓我們詳細討論一下這個問題。 在將數據存儲到 CSV 文件之前使用 Fernet 加密來保護數據時,在使用 Pandas 讀取文件時解密數據可能具有挑戰性。 加密的字符串需要適當的處理以確保它們在解密過程中的完整性。

問題的解決方案

此問題的一個潛在解決方案是使用自定義函數並將它們應用於從 CSV 文件中獲取的數據框。 我們將創建一個使用 Fernet 庫解密加密字符串的函數,然後將此函數應用於包含加密數據的 Pandas 數據幀。

以下是對代碼的逐步解釋:

1.首先,我們需要導入必要的庫:

import pandas as pd
from cryptography.fernet import Fernet

2. 然後,讓我們生成一個 Fernet 密鑰並加密一些示例數據。 假設我們已經加密了以下數據並將其保存在名為“encrypted_data.csv”的 CSV 文件中,其中包含兩列“data”和“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. 現在,讓我們創建一個函數來使用給定的 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. 我們可以使用 Pandas 讀取包含加密數據的 CSV 文件:

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

5. 最後,使用“apply”方法將“decrypt_string”函數應用於數據幀的加密列,並將解密後的數據存儲在新列中。 請注意,您需要在“apply”方法中將密鑰作為附加參數傳遞:

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

弗內特圖書館

菲涅特 是 Python 中流行的密碼庫,它提供了使用 AES 對稱密鑰密碼術加密和解密數據的易於使用的方法。 該庫保證使用 Fernet 加密的數據在沒有密鑰的情況下無法被進一步操作或讀取,從而確保數據的機密性和完整性。 Fernet 對密文使用 URL-safe/base64 編碼,這使得它適合在文件或數據庫中存儲加密數據。

熊貓圖書館

大熊貓 是 Python 中的開源數據操作和數據分析庫。 它提供數據結構,例如 Series 和 DataFrame,以及用於處理、轉換和可視化數據的各種函數。 Pandas 特別適用於處理結構化或表格數據,例如 CSV 文件或 SQL 數據庫。 該庫簡化了數據操作的許多方面,使其成為數據分析和機器學習的重要工具。

綜上所述,可以按照本文提供的步驟使用 Fernet 和 Pandas 解密保存在 CSV 文件中的加密字符串。 通過創建自定義解密函數並將其應用於數據框,我們可以有效地解密存儲在 CSV 文件中的敏感數據。

相關文章:

發表評論