Python中的公钥加密和私钥解密

2023-03-27 00:00:00 加密 解密 公钥

在 Python 中,可以使用 PyCrypto 库来实现公钥加密和私钥解密。以下是一个示例:

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

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

# 将公钥和私钥分别保存为 PEM 格式的字符串
public_key_str = key.publickey().export_key().decode('utf-8')
private_key_str = key.export_key().decode('utf-8')

# 使用公钥加密数据
public_key = RSA.import_key(public_key_str)
cipher = PKCS1_OAEP.new(public_key)
encrypted_data = cipher.encrypt(b'pidancode.com')

# 使用私钥解密数据
private_key = RSA.import_key(private_key_str)
cipher = PKCS1_OAEP.new(private_key)
decrypted_data = cipher.decrypt(encrypted_data).decode('utf-8')

print(decrypted_data)  # 输出:pidancode.com

首先,我们使用 RSA.generate(2048) 生成一个 2048 位的 RSA 密钥对。然后,我们将公钥和私钥分别保存为 PEM 格式的字符串,这样方便存储和传输。注意,公钥可以公开,而私钥必须保密。

接着,我们使用公钥加密数据。在 PyCrypto 中,使用 PKCS1_OAEP 算法对数据进行加密。需要先将 PEM 格式的公钥转换成 RSA 对象,然后使用 PKCS1_OAEP.new(public_key) 创建一个加密器对象。加密器的 encrypt 方法可以接受任意长度的数据,并返回加密后的数据。

最后,我们使用私钥解密数据。与加密相反,需要先将 PEM 格式的私钥转换成 RSA 对象,然后使用 PKCS1_OAEP.new(private_key) 创建一个解密器对象。解密器的 decrypt 方法接受加密后的数据,并返回解密后的数据。

在上面的例子中,我们使用了字符串 "pidancode.com" 进行加密和解密。您可以替换成其他字符串来进行测试。

相关文章