栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python 校验RSA加密 使用公钥进行加密

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python 校验RSA加密 使用公钥进行加密

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)
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/983978.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号