Python中的公钥加密和私钥解密
在 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" 进行加密和解密。您可以替换成其他字符串来进行测试。
相关文章