Python crypto模块实现RSA和AES加密解密

在计算机领域中,加密是保护数据安全的重要手段之一。RSA和AES是两种常用的加密算法。本文将介绍如何使用Python crypto模块实现RSA和AES的加密和解密操作,并提供相应的代码示例。

RSA加密解密

RSA是一种非对称加密算法,其特点是使用一对密钥(公钥和私钥)进行加密和解密操作。公钥用于加密数据,私钥用于解密数据。

首先,我们需要生成RSA密钥对。下面是生成RSA密钥对的代码示例:

from Crypto.PublicKey import RSA

# 生成RSA密钥对
key = RSA.generate(2048)

# 获取公钥和私钥
public_key = key.publickey().export_key()
private_key = key.export_key()

# 保存公钥和私钥到文件
with open('public.pem', 'wb') as f:
    f.write(public_key)
    
with open('private.pem', 'wb') as f:
    f.write(private_key)

上述代码中,我们使用RSA.generate函数生成2048位的RSA密钥对,然后使用export_key函数分别获取公钥和私钥,并将它们保存到文件中。

接下来,我们可以使用公钥对数据进行加密,使用私钥对数据进行解密。下面是RSA加密解密的代码示例:

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP

# 加载公钥和私钥
with open('public.pem', 'rb') as f:
    public_key = RSA.import_key(f.read())
    
with open('private.pem', 'rb') as f:
    private_key = RSA.import_key(f.read())

# 加密数据
cipher_rsa = PKCS1_OAEP.new(public_key)
encrypted_data = cipher_rsa.encrypt(b'Hello, World!')

# 解密数据
cipher_rsa = PKCS1_OAEP.new(private_key)
decrypted_data = cipher_rsa.decrypt(encrypted_data)

print(decrypted_data.decode())

上述代码中,我们首先使用import_key函数加载公钥和私钥,然后使用PKCS1_OAEP模块创建RSA加密对象。接着,使用公钥加密数据,使用私钥解密数据,并打印解密后的结果。

AES加密解密

AES是一种对称加密算法,其特点是使用相同的密钥进行加密和解密操作。由于对称加密算法的加密速度较快,因此在实际应用中较为常见。

首先,我们需要生成AES密钥。下面是生成AES密钥的代码示例:

from Crypto.Cipher import AES
import os

# 生成AES密钥
key = os.urandom(16)

# 保存AES密钥到文件
with open('aes.key', 'wb') as f:
    f.write(key)

上述代码中,我们使用os.urandom函数生成16个字节的随机数作为AES密钥,并将其保存到文件中。

接下来,我们可以使用AES密钥对数据进行加密和解密。下面是AES加密解密的代码示例:

from Crypto.Cipher import AES

# 加载AES密钥
with open('aes.key', 'rb') as f:
    key = f.read()

# 加密数据
cipher_aes = AES.new(key, AES.MODE_ECB)
encrypted_data = cipher_aes.encrypt(b'Hello, World!')

# 解密数据
cipher_aes = AES.new(key, AES.MODE_ECB)
decrypted_data = cipher_aes.decrypt(encrypted_data)

print(decrypted_data.decode())

上述代码中,我们首先使用open函数加载AES密钥,然后使用AES.new函数创建AES加密对象。接着,使用AES密钥加密数据,使用相同的AES密钥解密数据,并打印解密后的结果。

总结

本文介绍了如何使用Python crypto模块实现RSA和AES的加密和解密操作。通过生成RSA密钥对和AES密钥,我们可以对数据进行加密保护,确保数据的机密性和安全性。加密算法在实际应用中具有重要的作用,我们可以根据具体的需求选择适合的加密算法来保护数据的安全