使用Python进行对称数据加密
本教程将演示如何在Python中使用Fernet算法进行对称加密。这是一种简单易用的方法,适合初学者入门。
首先,需要安装cryptography库:
pip install cryptography
接下来,我们编写一个简单的加密脚本:
from cryptography.fernet import Fernet# 生成密钥key = Fernet.generate_key()# 创建Fernet实例f = Fernet(key)# 加密数据data = b"some secret data"encrypted_data = f.encrypt(data)# 解密数据decrypted_data = f.decrypt(encrypted_data)print(f"解密后的文本: {decrypted_data.decode()}")
重要提示: 加密和解密都需要相同的密钥。请务必安全地存储密钥,因为它可以访问你的加密数据。切勿将密钥直接嵌入代码中。
立即学习“Python免费学习笔记(深入)”;
上述示例使用随机生成的密钥。在实际应用中,通常需要基于密码生成密钥。以下代码展示了如何从用户输入的密码生成密钥:
import base64from cryptography.fernet import Fernetfrom getpass import getpass# 获取用户密码password = getpass("密码: ")# 密码长度必须为32字节if len(password) != 32: raise RuntimeError("密码长度必须为32个字符!")# 将密码编码为ASCII字节password_bytes = password.encode('ascii')# 使用base64进行URL安全编码key = base64.urlsafe_b64encode(password_bytes)# 创建Fernet实例f = Fernet(key)# 加密数据data = b"Some secret data"encrypted_data = f.encrypt(data)# 解密数据decrypted_data = f.decrypt(encrypted_data)print(f"解密后的文本: {decrypted_data.decode()}")
高级说明: 本教程为了简化起见,直接使用密码生成密钥。在实际生产环境中,建议使用更安全的密钥派生函数,例如PBKDF2_HMAC,来增强安全性。
通过以上步骤,你已经学习了如何在Python中使用Fernet进行简单的对称加密。记住,密钥安全至关重要!