已解决: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 文件中的敏感数据。

相关文章:

发表评论