Đã giải quyết: Fernet%3A Không thể giải mã các chuỗi được lưu trong csv bằng pandas

Fernet là một thư viện mã hóa đối xứng trong Python cung cấp khả năng mã hóa an toàn và dễ sử dụng cho dữ liệu nhạy cảm. Một trường hợp sử dụng phổ biến cho Fernet là mã hóa dữ liệu trước khi lưu trữ trong tệp CSV, đảm bảo chỉ những bên được ủy quyền mới có thể truy cập dữ liệu đó. Tuy nhiên, việc giải mã các chuỗi được mã hóa này trong tệp CSV có thể hơi phức tạp, đặc biệt là khi sử dụng thư viện Pandas.

Trong bài viết này, chúng tôi sẽ thảo luận về một giải pháp cho vấn đề giải mã các chuỗi được lưu trong tệp CSV bằng Fernet và Pandas. Chúng tôi sẽ cung cấp giải thích từng bước về mã và đi sâu vào các chức năng và thư viện có liên quan tham gia vào quy trình.

Để bắt đầu, hãy thảo luận chi tiết về vấn đề. Khi sử dụng mã hóa Fernet để bảo mật dữ liệu trước khi lưu trữ trong tệp CSV, có thể khó giải mã lại dữ liệu trong khi sử dụng Pandas để đọc tệp. Các chuỗi được mã hóa yêu cầu xử lý thích hợp để đảm bảo tính toàn vẹn của chúng trong quá trình giải mã.

Giải pháp cho vấn đề

Một giải pháp tiềm năng cho vấn đề này là sử dụng các hàm tùy chỉnh và áp dụng chúng cho khung dữ liệu thu được từ tệp CSV. Chúng tôi sẽ tạo một chức năng để giải mã các chuỗi được mã hóa bằng thư viện Fernet, sau đó áp dụng chức năng này cho khung dữ liệu Pandas chứa dữ liệu được mã hóa.

Dưới đây là giải thích từng bước về mã:

1. Đầu tiên chúng ta cần import các thư viện cần thiết:

import pandas as pd
from cryptography.fernet import Fernet

2. Sau đó, hãy tạo khóa Fernet và mã hóa một số dữ liệu mẫu. Giả sử chúng tôi đã mã hóa dữ liệu sau và lưu nó trong tệp CSV có tên “encrypted_data.csv” với hai cột “data” và “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. Bây giờ, hãy tạo một hàm để giải mã các chuỗi được mã hóa bằng khóa Fernet đã cho:

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. Chúng tôi có thể đọc tệp CSV chứa dữ liệu được mã hóa bằng Pandas:

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

5. Cuối cùng, áp dụng chức năng 'decrypt_string' cho cột được mã hóa của khung dữ liệu bằng phương pháp 'áp dụng' và lưu trữ dữ liệu đã giải mã trong một cột mới. Lưu ý rằng bạn cần chuyển khóa dưới dạng đối số bổ sung trong phương thức 'áp dụng':

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

thư viện dương xỉ

dương xỉ là một thư viện mật mã phổ biến trong Python cung cấp các phương thức dễ sử dụng để mã hóa và giải mã dữ liệu bằng mật mã khóa đối xứng AES. Thư viện đảm bảo rằng dữ liệu được mã hóa bằng Fernet không thể bị thao tác hoặc đọc thêm nếu không có khóa, đảm bảo tính bảo mật và toàn vẹn của dữ liệu. Fernet sử dụng mã hóa URL-safe/base64 cho văn bản mật mã, giúp nó phù hợp để lưu trữ dữ liệu được mã hóa trong tệp hoặc cơ sở dữ liệu.

Thư viện gấu trúc

Gấu trúc là một thư viện phân tích dữ liệu và thao tác dữ liệu mã nguồn mở bằng Python. Nó cung cấp các cấu trúc dữ liệu, chẳng hạn như Sê-ri và Khung dữ liệu và các chức năng khác nhau để xử lý, chuyển đổi và trực quan hóa dữ liệu. Pandas đặc biệt hữu ích khi làm việc với dữ liệu có cấu trúc hoặc dạng bảng, chẳng hạn như tệp CSV hoặc cơ sở dữ liệu SQL. Thư viện này đơn giản hóa nhiều khía cạnh của thao tác dữ liệu, làm cho nó trở thành một công cụ thiết yếu để phân tích dữ liệu và học máy.

Tóm lại, có thể giải mã các chuỗi mã hóa được lưu trong tệp CSV bằng Fernet và Pandas bằng cách thực hiện theo các bước được cung cấp trong bài viết này. Bằng cách tạo chức năng giải mã tùy chỉnh và áp dụng nó vào khung dữ liệu, chúng tôi có thể giải mã hiệu quả dữ liệu nhạy cảm được lưu trữ trong tệp CSV.

bài viết liên quan:

Để lại một bình luận