2021-09-26-python RSA非对称加密、解密

本文介绍了RSA非对称加密算法的原理及Python实现过程,包括如何生成私钥和公钥,并将它们保存到文件。接着展示了使用公钥加密和私钥解密的代码示例,详细解释了加密和解密的步骤。通过这段代码,读者可以理解RSA加密的基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RSA非对称加密
在这里插入图片描述
这种方法用同一个人的公钥加密,用私钥解密

产生私钥和公钥

from Crypto import Random
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5
import base64

# 伪随机数生成器
random_generator = Random.new().read
# rsa算法生成实例
rsa = RSA.generate(1024, random_generator)
print(rsa.__str__())
# print(len(rsa))
# 私钥的生成
private_pem = rsa.exportKey()
print(private_pem)

with open("private.pem", "wb") as f:
    f.write(private_pem)
# 公钥的生成
public_pem = rsa.publickey().exportKey()
with open("public.pem", "wb") as f:
    f.write(public_pem)

第一步导库,库的安装Windows下安装 pycryptodome,linux下安装pycrypto
第二步生成证书,此处1024位

# 伪随机数生成器
random_generator = Random.new().read
# rsa算法生成实例
rsa = RSA.generate(1024, random_generator)

第三步生成私钥

private_pem = rsa.exportKey()

第四步生成公钥

public_pem = rsa.publickey().exportKey()

写入文件 是为了持久化,但是这里做测试不一定要写入

加密


def jiami(message):
    rsakey=RSA.importKey(public_pem)
    cipher = Cipher_pkcs1_v1_5.new(rsakey)
    cipher_text = base64.b64encode(cipher.encrypt(message.encode('utf-8')))
    return cipher_text.decode('utf-8')

xx=jiami('哈哈')
print(xx)

加密使用 公钥
先导入公钥
再申明一个加解密的对象cipher
在这里插入图片描述
密文加密

    cipher_text = base64.b64encode(cipher.encrypt(message.encode('utf-8')))

先 转换为utf8编码后再加密,再转换为b64编码

解密

def jiemi(enc):
    enc=enc.encode('utf8')
    rsakey=RSA.importKey(private_pem)
    cipher = Cipher_pkcs1_v1_5.new(rsakey)
    text=cipher.decrypt(base64.b64decode(enc),'解密失败')
    return text.decode('utf8')
yy=jiemi(xx)
print(yy)

这里读取到的是私钥,解密出明文的顺序可以看作是加密的反向顺序
加解密 的输出 如下
在这里插入图片描述
解密有个失败提示,但这个参数在函数中有的,实际运行还是报的别的错误

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Amoor123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值