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

Cryptodome.Cipher.AES:Python中保护敏感数据的首选加密方式

发布时间:2024-01-13 03:41:51

Cryptodome是一个Python密码学工具包,其中的Cipher模块提供了各种密码算法实现,包括对称加密算法AES(Advanced Encryption Standard)。AES是一种被广泛应用于保护敏感数据的加密算法,其密钥长度可以是128比特、192比特或256比特。

下面是使用Cryptodome.Cipher.AES加密敏感数据的示例代码:

from Cryptodome.Cipher import AES
from Cryptodome.Random import get_random_bytes

def encrypt_data(key, data):
    iv = get_random_bytes(16)  # 生成随机的初始化向量
    cipher = AES.new(key, AES.MODE_CBC, iv)  # 用密钥和初始化向量创建AES对象
    ciphertext = cipher.encrypt(data)  # 加密数据
    return iv + ciphertext

def decrypt_data(key, encrypted_data):
    iv = encrypted_data[:16]  # 提取初始化向量
    ciphertext = encrypted_data[16:]  # 提取密文
    cipher = AES.new(key, AES.MODE_CBC, iv)  # 用密钥和初始化向量创建AES对象
    data = cipher.decrypt(ciphertext)  # 解密数据
    return data.rstrip(b'\0')

# 以下是示例程序的使用方式

# 生成一个随机的128比特密钥
key = get_random_bytes(16)

# 待加密的敏感数据
data = b"Hello, World!"

# 加密数据
encrypted_data = encrypt_data(key, data)
print("Encrypted data:", encrypted_data)

# 解密数据
decrypted_data = decrypt_data(key, encrypted_data)
print("Decrypted data:", decrypted_data.decode())

以上代码中,encrypt_data函数接收一个密钥和待加密的数据,生成一个随机的16比特初始化向量,并使用密钥和初始化向量创建一个AES对象。然后,使用AES对象的encrypt方法对数据进行加密,返回加密后的数据。decrypt_data函数接收一个密钥和加密后的数据,提取初始化向量和密文,并使用密钥和初始化向量创建一个AES对象。然后,使用AES对象的decrypt方法对数据进行解密,返回解密后的数据。

在示例程序中,首先生成一个随机的128比特密钥,然后将要保护的敏感数据转化为字节串。接着,调用encrypt_data函数对数据进行加密,得到加密后的数据。最后,调用decrypt_data函数对加密后的数据进行解密,并将解密后的数据打印出来。

使用Cryptodome.Cipher.AES进行敏感数据的加密有助于保护数据的隐私和安全,特别是在网络传输或存储时,可以有效防止数据泄露或未经授权的访问。对称加密算法AES的高效性和安全性使其成为Python中保护敏感数据的首选加密方式。