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

Crypto.PublicKey.RSA库在Python中的使用介绍和示例代码

发布时间:2023-12-17 16:51:54

Crypto.PublicKey.RSA是Python中用于操作RSA加密算法的库。RSA算法是一种非对称加密算法,它使用一对密钥,即公钥和私钥,其中公钥用于加密数据,私钥用于解密数据。下面是Crypto.PublicKey.RSA库的使用介绍和示例代码。

1. 密钥生成

要使用RSA算法,首先需要生成一对密钥。可以使用RSA.generate()方法来生成密钥对。下面是一个生成2048位密钥对的示例代码:

from Crypto.PublicKey import RSA

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

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

# 打印公钥和私钥
print("公钥: ", public_key.decode())
print("私钥: ", private_key.decode())

2. 加密和解密数据

生成密钥后,可以使用公钥加密数据,使用私钥解密数据。下面是一个使用RSA算法加密和解密数据的示例代码:

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

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

# 加密数据
message = "Hello, World!"
public_key = key.publickey()
cipher = PKCS1_OAEP.new(public_key)
encrypted_data = cipher.encrypt(message.encode())

# 解密数据
private_key = key
cipher = PKCS1_OAEP.new(private_key)
decrypted_data = cipher.decrypt(encrypted_data).decode()

# 打印原始数据和解密后的数据
print("原始数据: ", message)
print("解密后的数据: ", decrypted_data)

3. 签名和验证签名

RSA算法还可以用于生成数字签名和验证数字签名。下面是一个使用RSA算法生成数字签名和验证数字签名的示例代码:

from Crypto.PublicKey import RSA
from Crypto.Signature import pkcs1_15
from Crypto.Hash import SHA256

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

# 签名数据
message = "Hello, World!"
private_key = key
hash_obj = SHA256.new(message.encode())
signer = pkcs1_15.new(private_key)
signature = signer.sign(hash_obj)

# 验证签名
public_key = key.publickey()
verifier = pkcs1_15.new(public_key)
hash_obj = SHA256.new(message.encode())
try:
    verifier.verify(hash_obj, signature)
    print("签名验证通过")
except (ValueError, TypeError):
    print("签名验证失败")

通过以上示例代码,我们可以看到Crypto.PublicKey.RSA库的使用方法和操作。它提供了密钥的生成、数据加密和解密,以及数字签名和验证签名等功能,可以方便地进行RSA算法的操作和应用。