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

使用Fernet加密算法保护敏感数据

发布时间:2024-01-03 21:34:20

Fernet加密算法是一种对称加密算法,由Python Cryptography库提供支持。它使用AES-128加密算法在CBC模式下进行加密,并使用HMAC算法生成签名,以确保数据的完整性和安全性。以下是一个使用Fernet加密算法保护敏感数据的示例。

from cryptography.fernet import Fernet

def generate_key():
    """
    生成一个256位的随机密钥,并将其存储在文件中
    """
    key = Fernet.generate_key()
    with open("key.txt", "wb") as key_file:
        key_file.write(key)

def load_key():
    """
    从文件中加载并返回密钥
    """
    with open("key.txt", "rb") as key_file:
        key = key_file.read()
    return key

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)
    return decrypted_data.decode()

# 生成密钥并保存
generate_key()

# 加载密钥
key = load_key()

# 待加密的敏感数据
sensitive_data = "这是一段敏感数据"

# 加密数据
encrypted_data = encrypt_data(sensitive_data, key)
print("加密后的数据:", encrypted_data)

# 解密数据
decrypted_data = decrypt_data(encrypted_data, key)
print("解密后的数据:", decrypted_data)

在上面的示例中,generate_key函数用于生成一个256位的随机密钥,并将其保存在名为"key.txt"的文件中。load_key函数从文件中加载并返回密钥。

encrypt_data函数使用给定的密钥对敏感数据进行加密,并返回加密后的结果。在这个示例中,我们使用encode方法将字符串转换为字节类型,然后调用Fernet对象的encrypt方法进行加密。

decrypt_data函数使用给定的密钥对加密数据进行解密,并返回解密后的结果。在这个示例中,我们首先调用Fernet对象的decrypt方法对加密数据进行解密操作,然后使用decode方法将字节类型的解密结果转换为字符串类型。

最后,在示例中,我们演示了如何对字符串"这是一段敏感数据"进行加密和解密,并打印出加密和解密后的结果。