Python实现简单的数据加密与解密
发布时间:2023-12-04 18:28:23
在Python中,可以使用各种加密算法来实现数据加密与解密。下面以AES算法为例说明如何实现简单的数据加密与解密。
AES(Advanced Encryption Standard)是一种常用的对称加密算法,使用相同的密钥进行加密和解密操作。在Python中,可以使用PyCryptodomex库来实现AES加密与解密。
首先,需要安装PyCryptodomex库。可以使用以下命令进行安装:
pip install pycryptodomex
接下来,可以使用以下代码实现数据的加密与解密:
from Cryptodome.Cipher import AES
from Cryptodome.Util.Padding import pad, unpad
from base64 import b64encode, b64decode
# 加密函数
def encrypt(key, data):
# 创建AES加密器,使用ECB模式
cipher = AES.new(key, AES.MODE_ECB)
# 使用PKCS7填充方式进行加密
encrypted_data = cipher.encrypt(pad(data.encode(), AES.block_size))
# 返回base64编码的加密数据
return b64encode(encrypted_data).decode()
# 解密函数
def decrypt(key, encrypted_data):
# 创建AES解密器,使用ECB模式
cipher = AES.new(key, AES.MODE_ECB)
# 对base64编码的加密数据进行解码
encrypted_data = b64decode(encrypted_data.encode())
# 使用PKCS7填充方式进行解密
decrypted_data = unpad(cipher.decrypt(encrypted_data), AES.block_size)
# 返回解密后的数据
return decrypted_data.decode()
# 测试代码
key = b'0123456789abcdef' # 密钥,长度必须为16、24或32字节
data = 'Hello, World!' # 要加密的数据
encrypted_data = encrypt(key, data)
print('加密后的数据:', encrypted_data)
decrypted_data = decrypt(key, encrypted_data)
print('解密后的数据:', decrypted_data)
运行上述代码,会输出以下结果:
加密后的数据: L/4duTTINZhiiRLsdO8UeQ== 解密后的数据: Hello, World!
以上代码中,使用AES算法进行加密和解密。其中,encrypt函数接收密钥和要加密的数据作为参数,返回base64编码的加密数据。decrypt函数接收密钥和base64编码的加密数据作为参数,返回解密后的数据。
使用AES算法进行数据加密与解密时,需要注意以下几点:
1. 密钥的长度必须为16、24或32字节。
2. 加密和解密使用的密钥必须相同。
3. 使用ECB模式时,要加密的数据的长度必须是密钥长度的倍数,需要使用填充方式进行处理。这里使用了PKCS7填充方式。
4. 加密后的数据可以使用base64编码进行传输,以便在不同的系统之间进行交互。
以上是使用AES算法实现数据加密与解密的简单示例。根据实际需求,还可以选择其他加密算法和填充方式,以及加入更复杂的安全机制来保护数据的安全性。
