欢迎访问宙启技术站
智能推送

使用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密钥等。