第一种加密方式(公钥以-----BEGIN RSA PUBLIC KEY-----开头):
import base64
import binascii
import rsa
rsa_public_key = list()
rsa_public_key.append('-----BEGIN RSA PUBLIC KEY-----')
rsa_public_key.append('MIGJAoGBANVy2G6szNwXAj7RvDAqWECQohXicdIu+1E6gZc9wkUIpVC8LD2HrwKpmpxPTg6I4y8by9tJzTiTdJxTaukCqO8qYoWPTj3HVzDzxXELLLQ89unGp4+yPxJrtq+aNr14zH5nJBS80i0jIP2yaGzdT9EsPVCl8mq4BVg2T1ffc5aBAgMBAAE=')
rsa_public_key.append('-----END RSA PUBLIC KEY-----')
rsa_public_key = '\n'.join(rsa_public_key)
rsa_public_key1 = rsa_public_key.encode()
key = rsa.PublicKey.load_pkcs1(rsa_public_key1)
ss = rsa.encrypt(str.encode("要加密的字符串"), key)
print(ss)
#转base64编码
# print(base64.b64encode(ss).decode("utf-8"))
#将二进制数据字符串转换为十六进制编码
sss = binascii.b2a_hex(ss)
print(sss)
注意:如果你的公钥是以 -----BEGIN PUBLIC KEY----- 开头的(可以直接使用第二种加密方式),
这种格式需要转换成python支持的pkcs1格式-----BEGIN RSA PUBLIC KEY-----,注意对比,多了RSA
转换网址如下:在线RSA PKCS#1、PKCS#8公钥格式转换工具-ME2在线工具
加密的结果可以根据需要再进行转换
第二种加密方式(公钥以-----BEGIN PUBLIC KEY-----开头的):
#使用cryptography==2.6.0
from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5
from Crypto.PublicKey import RSA
public_key = "公钥"
strc = "要加密的字符串"
rsakey = RSA.importKey(public_key)
# 使用Crypto模块中的pkcs1_v1_5,对应pkcs8的格式
cipher = Cipher_pkcs1_v1_5.new(rsakey)
enres = cipher.encrypt(str.encode(strc))
print(enres)