当前位置:首页 > python > 正文内容

用python写个rsa公钥解密

zhangsir2年前 (2023-03-28)python185

当RSA加密时,数据被加密为一个数字,这个数字只能由私钥持有者解密。因此,如果您想使用RSA加密进行通信,您需要生成一对公钥和私钥,发送方使用接收方的公钥进行加密,接收方使用自己的私钥进行解密。


以下是一个使用Python编写的RSA公钥解密程序,需要使用PyCryptodome库。该程序需要一个RSA公钥文件,该文件必须是PEM格式。请注意,这个程序只能解密使用RSA公钥加密的数据,不能解密使用RSA私钥加密的数据。


from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
import base64
# 读取公钥
with open('public.pem', 'rb') as f:
    key = RSA.import_key(f.read())
# 创建RSA解密器
cipher = PKCS1_OAEP.new(key)
# 加密的数据
encrypted_data = b'VRSZz8hM6mdxUj+KUwMHbmTMBTvaAKKhJ9KfOmi1DMLhWZsGJl6UkK6UwlywT1Tm41fTyqzBAV7/mObxN87P4+zVRM+kfR1C26XCNlX5sj5rPHW8zR1RHnmygDrxGOkNVwI3q81/jkKj9XhCgopzJFZ8KvE='
# 解码加密的数据
encrypted_data = base64.b64decode(encrypted_data)
# 解密数据
decrypted_data = cipher.decrypt(encrypted_data)
# 打印解密后的数据
print(decrypted_data.decode())

在上面的程序中,我们首先使用RSA.import_key()函数读取PEM格式的公钥文件,然后使用PKCS1_OAEP.new()函数创建一个RSA解密器。我们将加密数据encrypted_data作为参数传递给解密器的decrypt()函数,解密器使用公钥对加密数据进行解密,并返回解密后的数据。


最后,我们使用base64.b64decode()函数对加密数据进行解码,以便正确地传递给解密器进行解密。解密后的数据可以使用decode()函数将其转换为字符串格式,并打印出来。


请注意,该程序只能解密使用RSA公钥加密的数据,不能解密使用RSA私钥加密的数据。


zhangsir版权a1防采集https://mianka.xyz

扫描二维码推送至手机访问。

版权声明:本文由zhangsir or zhangmaam发布,如需转载请注明出处。

本文链接:https://www.mianka.xyz/post/152.html

分享给朋友:

“用python写个rsa公钥解密” 的相关文章

python 实现彩色图转素描图

python可以把彩色图片转化为铅笔素描草图,对人像、景色都有很好的效果。而且只需几行代码就可以一键生成,适合批量操作,非常的快捷。需要的第三方库:Opencv - 计算机视觉工具,可以实现多元化的图像视频处理,有Python接口""" Photo ...

python 给电脑设置闹钟

python会自动触发windows桌面通知,提示重要事项,比如说:您已工作两小时,该休息了我们可以设定固定时间提示,比如隔10分钟、1小时等用到的第三方库:win10toast - 用于发送桌面通知的工具from win10toast import ToastNoti...

计算机学习视频教程

人工智能机器学习:Python&R实践课程介绍:https://www.aihorizon.cn/1百度网盘地址: https://pan.baidu.com/s/1a743NTKFRjsgexMTagWooA?pwd=e39j动手使用Python进行自然语言处理(NLP)课程介绍:http...

python 多线程与多进程的代码实例

一.两者区别多进程和多线程的主要区别是:线程是进程的子集(部分),一个进程可能由多个线程组成。多进程的数据是分开的、共享复杂,需要用IPC;但同步简单。多线程共享进程数据,共享简单;但同步复杂。(1)多进程进程是程序在计算机上的一次执行活动,即正在运行中的应用程序,通常称为进程。当你运行一个程序,你...

python selenium 使用代理ip

代码如下:from selenium import webdriver chromeOptions = webdriver.ChromeOptions() chromeOptions.add_argument("--proxy-serv...

Linux系统下使用Python+selenium+谷歌浏览器下载文件

from seleniumwire import webdriver import time ch_options = webdriver.ChromeOptions() ch_options.add_argument("-...