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

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算法实现数据加密与解密的简单示例。根据实际需求,还可以选择其他加密算法和填充方式,以及加入更复杂的安全机制来保护数据的安全性。