使用Fernet加密算法保护Python脚本中的敏感数据
发布时间:2024-01-03 21:41:14
Fernet是Python中的对称加密算法,用于保护敏感数据。它基于AES-128加密算法,使用CBC模式和PKCS7填充。
首先,需要安装cryptography库,可以使用以下命令进行安装:
pip install cryptography
接下来,我们将使用Fernet算法加密和解密包含敏感数据的字符串。下面是一个例子:
from cryptography.fernet import Fernet
def generate_key():
key = Fernet.generate_key()
with open("key.key", "wb") as key_file:
key_file.write(key)
def load_key():
return open("key.key", "rb").read()
def encrypt_data(data, key):
f = Fernet(key)
encrypted_data = f.encrypt(data.encode())
return encrypted_data
def decrypt_data(encrypted_data, key):
f = Fernet(key)
decrypted_data = f.decrypt(encrypted_data).decode()
return decrypted_data
# 生成密钥并保存到文件中
generate_key()
# 从文件中加载密钥
key = load_key()
# 加密敏感数据
sensitive_data = "This is a secret message"
encrypted_data = encrypt_data(sensitive_data, key)
print("Encrypted data:", encrypted_data)
# 解密数据
decrypted_data = decrypt_data(encrypted_data, key)
print("Decrypted data:", decrypted_data)
在上述示例中,我们首先定义了一些辅助功能来生成和加载密钥。generate_key()函数生成一个密钥并将其保存到名为key.key的文件中。load_key()函数从文件中加载密钥。
然后,我们定义了encrypt_data()和decrypt_data()函数来执行加密和解密过程。这两个函数首先使用提供的密钥创建一个Fernet对象,然后使用Fernet对象对数据进行加密或解密。
在我们的主程序中,我们首先生成密钥并将其保存到文件中。然后,我们加载密钥并使用它来加密一个字符串。加密后的数据将以字节字符串的形式打印出来。最后,我们使用相同的密钥来解密数据,并将解密后的字符串打印出来。
请注意,生成的密钥是唯一的,并且只有拥有密钥的人可以解密数据。因此,您应该妥善保管密钥文件,并确保只有受信任的人可以访问它。
此外,如果您需要加密和解密较大的数据量,可以考虑将数据分块进行加密和解密,以避免内存不足的问题。
这是使用Fernet加密算法保护Python脚本中的敏感数据的一个简单示例。您可以将此方法应用于保护其他敏感数据,如数据库连接字符串、API密钥等。
