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中保护敏感数据的首选加密方式。
