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

如何使用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字节的keyiv初始化一个Cipher对象。然后,我们使用此Cipher对象的encryptor属性对数据进行加密,并使用padding模块对数据进行填充。加密后的数据为字节字符串。

然后,我们使用同样的keyiv初始化另一个Cipher对象。我们使用此对象的decryptor属性对加密数据进行解密,并使用padding模块对数据进行解填充。解密后的数据为字节字符串。

这只是一个简单的示例,介绍了如何使用cryptography库进行数据加密和解密。实际上,cryptography库提供了更多加密算法和模式的支持,还可以进行数字签名和生成随机数等操作。