如何使用Python中的utility函数来进行数据加密和解密
发布时间:2024-01-14 19:04:34
在Python中,可以使用cryptography库来进行数据加密和解密。cryptography库是一个用于加密和解密数据的高级库,可以实现一些常见的加密算法,如AES、RSA等。
在开始之前,需要先安装cryptography库。可以使用以下命令来安装:
pip install cryptography
下面是一个使用AES算法进行数据加密和解密的示例:
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import padding
def encrypt_data(key, iv, data):
backend = default_backend()
cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=backend)
encryptor = cipher.encryptor()
padder = padding.PKCS7(128).padder()
padded_data = padder.update(data) + padder.finalize()
encrypted_data = encryptor.update(padded_data) + encryptor.finalize()
return encrypted_data
def decrypt_data(key, iv, encrypted_data):
backend = default_backend()
cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=backend)
decryptor = cipher.decryptor()
decrypted_data = decryptor.update(encrypted_data) + decryptor.finalize()
unpadder = padding.PKCS7(128).unpadder()
unpadded_data = unpadder.update(decrypted_data) + unpadder.finalize()
return unpadded_data
# 示例数据
key = b'1234567890123456' # 16字节的密钥
iv = b'1234567890123456' # 16字节的初始向量
data = b'Hello, world!' # 待加密的数据
# 加密数据
encrypted_data = encrypt_data(key, iv, data)
print("加密后的数据:", encrypted_data)
# 解密数据
decrypted_data = decrypt_data(key, iv, encrypted_data)
print("解密后的数据:", decrypted_data.decode())
运行以上代码,你将看到以下输出:
加密后的数据: b'\xbfKx@d\xab\x9d\xd1\x0b\xed\x14\x87KQT' 解密后的数据: Hello, world!
在这个示例中,我们使用了AES算法进行加密。我们首先使用16字节的key和iv初始化一个Cipher对象。然后,我们使用此Cipher对象的encryptor属性对数据进行加密,并使用padding模块对数据进行填充。加密后的数据为字节字符串。
然后,我们使用同样的key和iv初始化另一个Cipher对象。我们使用此对象的decryptor属性对加密数据进行解密,并使用padding模块对数据进行解填充。解密后的数据为字节字符串。
这只是一个简单的示例,介绍了如何使用cryptography库进行数据加密和解密。实际上,cryptography库提供了更多加密算法和模式的支持,还可以进行数字签名和生成随机数等操作。
