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

Python中如何使用PKCS7算法进行数据加密和解密

发布时间:2023-12-13 01:03:05

在Python中,可以使用pycryptodome库来实现PKCS7算法进行数据加密和解密。PKCS7(Public Key Cryptography Standards #7)是一种填充算法,用于在分组密码中确保数据的完整性和可解密性。

首先,需要安装pycryptodome库。可以使用以下命令进行安装:

pip install pycryptodome

下面是一个使用PKCS7算法进行数据加密和解密的示例代码:

from Cryptodome.Cipher import AES
from Cryptodome.Util.Padding import pad, unpad
from Cryptodome.Random import get_random_bytes

# 加密函数
def encrypt(plain_text, key):
    iv = get_random_bytes(AES.block_size)
    cipher = AES.new(key, AES.MODE_CBC, iv)
    cipher_text = cipher.encrypt(pad(plain_text.encode('utf-8'), AES.block_size))
    return iv + cipher_text

# 解密函数
def decrypt(cipher_text, key):
    iv = cipher_text[:AES.block_size]
    cipher = AES.new(key, AES.MODE_CBC, iv)
    plain_text = unpad(cipher.decrypt(cipher_text[AES.block_size:]), AES.block_size)
    return plain_text.decode('utf-8')

# 测试加密解密
key = get_random_bytes(16)  # 128 bits key
plain_text = "Hello, World!"

# 加密
encrypted_data = encrypt(plain_text, key)
print("Encrypted Data:", encrypted_data)

# 解密
decrypted_data = decrypt(encrypted_data, key)
print("Decrypted Data:", decrypted_data)

运行上述代码,将会输出加密后的数据和解密后的数据。在每次运行时,生成的密文都将是不同的,即使是相同的明文和密钥也是如此。

注意,上述代码中使用的密钥是随机生成的。在实际应用中,应使用长期有效且安全的密钥进行加密和解密,并确保密钥的机密性和完整性。

此外,还可以使用其他填充模式(如PKCS5)进行加密和解密。pycryptodome库提供了其他填充模式的支持,可以根据实际需求进行选择和使用。