from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5
from Crypto.Signature import PKCS1_v1_5 as Signature_pkcs1_v1_5
import base64
def rsa_encrypt(password:str,publickey):
"""校验RSA加密 使用公钥进行加密"""
public_key = '-----BEGIN PUBLIC KEY-----\n'+ publickey +'\n-----END PUBLIC KEY-----'
cipher = Cipher_pkcs1_v1_5.new(RSA.importKey(public_key))
cipher_text = base64.b64encode(cipher.encrypt(password.encode())).decode()
return cipher_text
def rsa_decrypt(text):
"""校验RSA加密 使用私钥进行解密"""
cipher = Cipher_pkcs1_v1_5.new(RSA.importKey(private_key))
retval = cipher.decrypt(base64.b64decode(text), 'ERROR').decode('utf-8')
return retval
publickey='MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCN1c81ZEC8c2AaYMdoV9yZbOUXL3LFBVyhC/lnYz+26MjrjsAF+07mREIZBhVZqN+8dIs3+s3M6FMuMFXYJH7ckCGKvWpDauzyf7B9jmCu+1QAeP32pdJA+1T3fBe8mvhq/dFN4bMhsSw2O56ydwBREeQGhNkTQaKGJCc231J9OwIDAQAB'
print(rsa_encrypt('123456789',publickey))
另一种方案 秘钥长度不是x.509
import base64
import rsa
(pubkey, privkey) = rsa.newkeys(1024) # 1024这个数字表示可以加密的字符串长度,可以是512,4096等等,
with open('public.pem' ,'w+') as f:
f.write(pubkey.save_pkcs1().decode())
print("=============================")
with open('private.pem' ,'w+') as f:
f.write(privkey.save_pkcs1().decode())
with open('public.pem' ,'r') as f:
pubkey = rsa.PublicKey.load_pkcs1(f.read().encode())
with open('private.pem' ,'r') as f:
privkey = rsa.PrivateKey.load_pkcs1(f.read().encode())
print('pubkey:',pubkey)
print('privkey:',privkey)
message_data = '123456789'.encode('utf-8')
crypto = rsa.encrypt(message_data, pubkey)
print('pubkey加密后的数据:',crypto)
base64_key = base64.b64encode(crypto)
print('base64后的数据:',base64_key)
# 解密数据
message = rsa.decrypt(crypto, privkey)
print('解密后的数据:',message)
另一种方案
import Crypto.PublicKey.RSA
import Crypto.Random
x = Crypto.PublicKey.RSA.generate(1024)
a = x.exportKey("PEM") # 生成私钥
b = x.publickey().exportKey() # 生成公钥
with open("a.pem", "wb") as x:
x.write(a)
with open("b.pem", "wb") as x:
x.write(b)
y = Crypto.PublicKey.RSA.generate(1024, Crypto.Random.new().read)
c = y.exportKey() # 生成私钥
d = y.publickey().exportKey() # 生成公钥
with open("c.pem", "wb") as x:
x.write(c)
with open("d.pem", "wb") as x:
x.write(d)
python 校验RSA加密 使用公钥进行加密
最新推荐文章于 2024-02-23 00:45:00 发布