RSA 非对称加密:

非对称加密 RSA 拥有两个密钥, 分别为 公钥 和 私钥,   服务器端拥有公钥和私钥, 二客户端,只有公钥, 这个公钥可以随便传,即使被截获也没有关系, 加密使用公钥, 而解密, 只能用私钥

生成公钥和私钥:

生成的公钥和私钥, 需要保存到一个文件之中

from Crypto.PublicKey import RSA  # 用来管理密钥rsa_key = RSA.generate(2048)  # 生成公钥和私钥# 获取私钥
private_key = rsa_key.export_key()# 获取公钥
public_key = rsa_key.public_key().export_key()with open("rsa_public_pem.txt", "wb") as f:f.write(public_key)with open("rsa_private_key_pem.txt", "wb") as f:f.write(private_key)

加密:

from Crypto.Cipher import PKCS1_v1_5
from Crypto.PublicKey import RSA
import base64message = "我爱python编程, 励志成为一名伟大的爬虫大佬!"f = open("rsa_public_pem.txt", "r", encoding="utf-8")# 使用公钥创建一个 密钥
rsa_key = RSA.import_key(f.read())# 使用创建的密钥来创建一个rsa 加密对象
rsa = PKCS1_v1_5.new(rsa_key)# 加密数据
miwen = rsa.encrypt(message.encode("utf-8"))# 使用b64 编码
result = base64.b64encode(miwen).decode("utf-8")
print(result)

解密:

from Crypto.Cipher import PKCS1_v1_5
from Crypto.PublicKey import RSA
import base64# 准备密文
miwen = "ToumbsMmQphEDsgdW5AKaHgpEY1tU93MDL9t9zrjn/xsohIoi2fVfwcsqcyv28JJvJLEeZJ7EAV18rGNP6p+k1WkQHMERIez/NRjNvBWIuoZdb+HGqWQQB5yiOS9nFo6DY1muYrYBPJpUJ0+eXfH8N8+07hGLvJlpYtM4OqfMVC45+dYx9FBWNwHsRG8V0kHPDPCzMN06oFqIXjHulFFFvJ/GkEqaLENCmI713Jy5L7jQh0ff2u0YSIHujTYMvhzgEKt4ZoMr0yH4WcRpdYCLjnlhIW/GpV1gy8dXNQ7n80z/JJtsmuQ4VcquGx4LkEVnIhB62lMuUaVn1NliEBPdg=="# 读取私钥
f = open("rsa_private_key_pem.txt", "r", encoding="utf-8")# 导入私钥
rsa_key = RSA.import_key(f.read())# 使用私钥创建rsa对象
rsa = PKCS1_v1_5.new(rsa_key)# 解密
mingwen = rsa.decrypt(base64.b64decode(miwen), None)print(mingwen.decode())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/23193.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mysql时间操作

一、MySql时间戳转换 select unix_timestamp(); #获取时间戳格式时间 select FROM_UNIXTIME(1717399499); #将时间戳转换为普通格式时间二、Mysql时间相加减结果转换为秒 方法1:time_to_sec(timediff(endTime, startTime)) SELECTDISTINCT(column1),min(last_mo…

在Jenkins 中使用 NVM 管理 Node.js 部署项目的自动化脚本

在Jenkins 中使用 NVM 管理 Node.js 部署项目的自动化脚本 人生旅途,总有人不断地走来,有人不断地离去。当新名字变成老名字,当老的名字渐渐模糊,又是一个故事的结束和另一个故事的开始。 在现代软件开发中,持续集成/持…

容器化实践:DevOps环境下的容器交付流程

DevOps的兴起是为了应对市场和消费者对技术应用的不断增长的需求。它的目标是构建一个更快的开发环境,同时保持软件的高质量标准。DevOps还致力于在敏捷开发周期中提升软件的整体品质。这一目标的实现依赖于多种技术、平台和工具的综合运用。 结合容器化技术与DevO…

深入理解mysql中的各种超时属性

1. 前言 connectTimeout: 连接超时 loginTimeout: 登录超时 socketTimeout: Socket网络超时,即读超时 queryTimeout: sql执行超时 transactionTimeout:spring事务超时 innodb_lock_wait_timeout:innodb锁等待超时 wait_timeout:非交互式连接关闭前的等待时间 inter…

uniapp小程序多线程 Worker 实战【2024】

需求 最近遇到个小程序异步解码的需求,采用了WebAssembly,涉及大量的计算。由于小程序的双线程模型只有一个线程处理数据,因此智能寻求其它的解决方案。查看小程序的文档,发现小程序还提供一个异步线程的Worker方案,可…

代码随想录算法训练营第25天|回溯

回溯part02 216. 组合总和 III /*** param {number} k* param {number} n* return {number[][]}*/ var combinationSum3 function(k, n) {// k个数字相加为n// 只能使用1-9// 每个数字只能使用一次// 不能重复 如 1 2 4 、 4 1 2 不可以let res [];backtracking(k, n, [], …

联想Y410P跑大模型

安装vs 2017 查看GPU版本 查看支持哪个版本的cuda windows cuda更新教程_cuda 12.0-CSDN博客 下载并安装cuda tookit 10.1 CUDA Toolkit 10.1 Update 2 Archive | NVIDIA Developer 找到下载的文件,安装 参考安装链接 Win10 Vs2017 CUDA10.1安装(避坑…

Due to a bug fix in https://github.com/huggingface/transformers/pull/28687

错误: Due to a bug fix in https://github.com/huggingface/transformers/pull/28687 transcription using a multilingual Whisper will default to language detection followed by transcription instead of translation to English.This might be a breaking …

InnoDB存储引擎非常重要的一个机制--MVCC(多版本并发控制)

Mysql是如何实现隔离性的?(锁MVCC) 隔离性是指一个事务内部的操作以及操作的数据对正在进行的其他事务是隔离的,并发执行的各个事务之间不能相互干扰。隔离性可以防止多个事务并发执行时,可能存在交叉执行导致数据的不…

安全U盘和普通U盘有什么区别?

安全U盘(也称为加密U盘或安全闪存驱动器)与普通U盘肯定是有一些区别的,从字面意思上来看,就能看出,安全U盘是能够保护文件数据安全性的,普通U盘没这一些功能的,可随意拷贝文件,不防盗…

面试4:c++(数位物联)

1.const 关健字的作用 定义常量,防止变量被意外修改,增强程序的可读性和维护性。 可以用于指针,声明指向常量的指针或常量指针。 2.static关健字的作用 (1)在函数内,用于修饰局部变量,使其生命周期延长到整个程序运行期…

mybatisplus多数据源内置方法报Invalid bound statement (not found)

在用mybatis-plus多数据源时用mapper内置的 selectList(queryWrapper) 查询数据报org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 问题是在配置多数据源时用的是SqlSessionFactoryBean,改为MybatisSqlSessionFactoryBean即可…

Python怎么逐行处理文件:深度解析与实用技巧

Python怎么逐行处理文件:深度解析与实用技巧 在Python中,逐行处理文件是一项常见且重要的任务。无论是读取大型日志文件、分析文本数据还是处理配置文件,逐行读取都能帮助我们更有效地管理内存并提高处理速度。本文将详细介绍Python中逐行处…

一文了解UVLED线光源的应用

在机器视觉系统中,光源作为不可或缺的一部分,能够提高目标成像效果,增强检测效果。光源的选择至关重要,选到不合适的会影响成像及检测效果。针对不同的检测对象,不同的形状光源应运而生。我们来看看最UVLED线光源。 下面以CCS的光…

某红书旋转滑块验证码分析与协议算法实现

文章目录 1. 写在前面2. 接口分析3. 验证轨迹4. 算法还原【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python与爬虫领域研究与开发工作! 【🌟作者推…

zoomeye api报错 request invalid, validate usage and try again

项目场景: 调用zoomeye的api接口进行数据拿取 问题描述 之前接口一直通着今天突然报错,以下为源代码 pip install zoomeye from zoomeye.sdk import ZoomEye zm ZoomEye(api_key"34A8B452-D874-C63E0-8471-F3D4f89766f") zm.dork_search(a…

图片像素缩放,支持个性化自定义与精准比例调整,让图像处理更轻松便捷!

图片已经成为我们生活中不可或缺的一部分。无论是社交媒体的分享,还是工作文档的编辑,图片都扮演着至关重要的角色。然而,你是否曾经遇到过这样的问题:一张高清大图在上传时却受限于平台的大小要求,或者一张小图需要放…

Spring MVC 源码分析之 DispatcherServlet#processDispatchResult方法

前言: 前面的篇章我们分析了 Spring MVC 工作流程中的 HandlerMapping、HandlerAdapter 的适配过程、拦截器的工作流程,以及处理业务请求的过程,本篇我们分析一下处理完业务解析视图的方法,也就是 DispatcherServlet#processDisp…

提高篇(二):高级绘图技巧:在Processing中创造精美图形

提高篇(二):高级绘图技巧:在Processing中创造精美图形 引言 Processing不仅是一种编程语言,更是一个用于创意编程的强大工具。掌握高级绘图技巧,可以让你在艺术创作中如虎添翼。在本篇文章中,我们将探索贝塞尔曲线、样条曲线、自定义形状、图形变换等高级绘图技术,帮助…

tkinter+火山引擎+python实现语音识别聊天机器人

想要做一款能通过语音识别来聊天的智能机器人,首先需要能通过麦克风录制语音进行识别转换成文字,将文字发送给机器人得到聊天结果,并能将返回的文字转换成语音进行合成,之后再通过本地播放语音实现语音交互。 架构: 实现步骤 一、本地录音 本地录音可以通过pyAudio库实…