Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách mã hóa và giải mã dữ liệu trong Python

Giới thiệu

Mật mã học (Cryptography) chuyển văn bản thường (plaintext) thành mật văn (ciphertext) = mã hóa, và ngược lại = giải mã. Dùng module fernet trong package cryptography. Fernet sinh khóa duy nhất – không có khóa thì không đọc/thao tác được dữ liệu đã mã hóa.

Cài đặt

pip install cryptography
from cryptography.fernet import Fernet

Sinh khóa

key = Fernet.generate_key()
f = Fernet(key)
print(key.decode())  # in khóa ra màn hình
Bq64GE--93K1RVro4go1frN-8twBSvXdbCPSPLIKz9U=

Mã hóa dữ liệu

encrypted_data = f.encrypt(b"Thông điệp này được mã hóa và không thể nhìn thấy!")
print(encrypted_data)
b'gAAAAABgILy91p_wqMntdT3mDkh0IBXSLjuBMQAfnGZAFkZCX1U6Q7TU2PthgFBwVz0QbKXpuNTHRzAgbdDV4zfuuzkGCXqVD--xJdkTycKH2iurC_oqHySLc9xJEXz93LkhTbKUa5HCxfJtB-Um_YkxqjclftXXZQ=='

Lưu ý: tiền tố b chuyển sang bytes. Có thể dùng .encode() thay thế.

Giải mã dữ liệu

decrypted_data = f.decrypt(encrypted_data)
print(decrypted_data.decode())
Thông điệp này được mã hóa và không thể nhìn thấy!

Lưu ý: Khóa có thể lưu file .txt để dùng lại: f = Fernet(saved_key).

Ví dụ hoàn chỉnh

from cryptography.fernet import Fernet
key = Fernet.generate_key()
print("Key:", key.decode())
f = Fernet(key)
encrypted_data = f.encrypt(b"Thông điệp này được mã hóa và không thể nhìn thấy!")
print("Sau mã hóa:", encrypted_data)
decrypted_data = f.decrypt(encrypted_data)
print(decrypted_data)
print("Sau giải mã:", decrypted_data.decode())

Kết luận

Đã học mã hóa/giải mã với cryptography. Có thể lưu khóa để mã hóa mật khẩu, giải mã verify từ DB. Xem tài liệu.