RSA加密原理

2024.2.23

密钥对的生成过程

1、随机找两个质数 P Q ,P Q 越大,越安全

本例取 P = 67 ,Q = 71

计算他们的乘积 N = P * Q = 4757

转化为二进为 1001010010101,该加密算法即为 13 位,实际使用中的算法是往往是 1024 位 或 2048 位,位数越长,算法越难被破解

2、计算 N 的欧拉函数 φ(N)  

(注:互质是公约数只有1的两个整数,叫做互质整数)

φ(N) 表示在小于等于 N 的正整数之中,与 N 构成互质关系的数的个数

例如:在 1 8 之中,与 8 形成互质关系的是 1357,所以 φ(n) = 4

如果 N = P * QP Q 均为质数,则
φ(N) = φ(P * Q)= φ(P - 1)φ(Q - 1) = (P - 1)(Q - 1)

本例中 φ(n) = 66 * 70 = 4620,这里记为 TT = φ(N) = 4620 

3、求公钥 E

E的范围:{E | gcd(E,T)=1, 1<E<T } 

讲人话就是 E , T 互质并且 E 大于 1 小于 T

本例取E=17(随便取,不要和T太接近了)

4、求私钥 D

D的范围:{D | E*D%T=1, 1<D<T } 

讲人话就是 E 和 D 的乘积除以 T 的余数等于 1 并且 D 大于 1 小于 T

本例取D=193

5、至此密钥对的生成就完成了

公钥(n,e)=(3403,17)    私钥(n,d)=(3403,193)

 6、加解密过程

加密(假设明文为123

明文^E % N = 123^17 % 3403 = 943

       ↑这里是幂运算,别理解成异或运算了

解密(现在密文就为943

密文^D % N = 943^193 % 3403 = 123

以上文字用 python 的话来讲就是

#先取两个随机的质数
P = int(input("请输入一个质数P:"))
Q = int(input("请输入一个质数Q:"))
N = P*Q#通过欧拉函数计算与N互质的个数
T = (P-1)*(Q-1)#取公钥
#找质数,埃拉托斯特尼筛法
primes = [True] * (T + 1)
for p in range(2, int(T**0.5) + 1):if primes[p]:primes[p*p::p] = [False] * ((T - p*p) // p + 1)
print([p for p in range(2, T + 1) if primes[p]])
E = int(input("请从上面数中选一个作为公钥E:"))#取私钥
print([i for i in range(2,T) if i*E%T==1])
D = int(input("请从上面数中选一个作为私钥D:"))#公钥(N,D) 私钥(N,E)
print(f"公钥({N},{E}) 私钥({N},{D})")#这里演示一下明密文的转化(仅数字)
plaintext = int(input("请输入明文"))
ciphertext = plaintext**E%N
plaintext = ciphertext**D%N 
print(f"密文为:{ciphertext}")
print(f"明文为:{plaintext}")

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

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

相关文章

前瞻性规划:解决数据中心机房通用性问题

随着技术的快速发展&#xff0c;数据中心机房的建设面临着不断变化的挑战。在机房规划和设计阶段&#xff0c;缺乏对用户需求的深入分析和对未来发展趋势的考量&#xff0c;往往会导致机房通用性不足&#xff0c;从而影响其长期使用效率和稳定性。本文将探讨数据中心机房建设中…

架构设计:缓存技术的应用与挑战

引言 在当今大数据时代&#xff0c;系统性能优化成为了架构设计中的重要一环。在高并发、大流量的应用场景下&#xff0c;如何提高系统的响应速度和吞吐量成为了亟待解决的问题。缓存技术作为一种常见的性能优化手段&#xff0c;能够显著提升系统的性能和稳定性。然而&#xf…

《凤凰架构》-全局事务章节读书笔记

二阶段提交协议&#xff1a; 准备阶段&#xff1a;又叫作投票阶段&#xff0c;在这一阶段&#xff0c;协调者询问事务的所有参与者是否准备好提交&#xff0c;参与者如果已经准备好提交则回复 Prepared&#xff0c;否则回复 Non-Prepared。这里所说的准备操作跟人类语言中通常…

Ansible概述和常用模块

目录 一、ansible概述 &#xff08;一&#xff09;基础知识 &#xff08;二&#xff09;特性 二、部署ansible &#xff08;一&#xff09;管理端安装 &#xff08;二&#xff09;ansible 目录结构 &#xff08;三&#xff09;配置主机清单 &#xff08;四&#xff09;…

Leetcode2583. 二叉树中的第 K 大层和

Every day a Leetcode 题目来源&#xff1a;2583. 二叉树中的第 K 大层和 解法1&#xff1a;层序遍历 排序 先使用层序遍历计算出树的每一层的节点值的和&#xff0c;保存在数组 levelSum 中。然后将数组进行排序&#xff0c;返回第 k 大的值。需要考虑数组长度小于 k 的边…

状态空间模型的离散化方法

介绍 状态空间模型通常是用来描述动态系统随时间变化的数学模型&#xff0c;它由状态方程和观测方程组成。对于连续时间的状态空间模型&#xff0c;我们有时需要将其离散化&#xff0c;以便在数字计算机上进行处理。常见的离散化方法有&#xff1a; 欧拉方法&#xff08;Forw…

【Linux】 yum命令使用

yum命令 yum&#xff08; Yellow dog Updater, Modified&#xff09; 是一个在 Fedora、CentOS 及其它一些基于 RPM 的 Linux 发行版中使用的包管理器。它允许用户自动安装、更新、配置和删除软件包。yum 由 Python 写成&#xff0c;基于 RPM&#xff08;Red Hat Package Mana…

【Mongo】mongodump/mongoexport/mongoimport 操作

一.mongodump 导出/导入 导出 1、进入容器 docker exec -it 容器id bash 2、导出 mongodump -h 127.0.0.1:27017 --authenticationDatabaseadmin -u admin -p xxx --archive/root/data.gz --gzip -d zb -c PUSH_MESSAGE_BACKUP -h 表示 host -d/--db 表示 databa…

EasyRecovery2024永久免费版手机数据恢复软件功能全面介绍

一、功能概述 EasyRecovery手机数据恢复软件是一款专为移动设备设计的数据恢复工具。它能够有效地从智能手机、平板电脑等移动设备中恢复因各种原因丢失的数据&#xff0c;包括但不限于误删除、格式化、系统崩溃、病毒感染等。 EasyRecovery-mac最新版本下载:https://wm.maked…

【Java程序设计】【C00267】基于Springboot的在线考试系统(有论文)

基于Springboot的在线考试系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 本系统是基于Springboot的在线考试系统&#xff1b;本系统主要分为管理员、教师和学生三种角色&#xff1b; 管理员登录系统后&#xff0c;可以对首页&#x…

悄悄话花费的时间(C语言)【二叉树各结点统计求和】

题目描述 给定一个二叉树&#xff0c;每个节点上站着一个人&#xff0c;节点数字表示父节点到该节点传递悄悄话需要花费的时间。 初始时&#xff0c;根节点所在位置的人有一个悄悄话想要传递给其他人&#xff0c;求二叉树所有节点上的人都接收到悄悄话花费的时间。 输入描述 …

前端数据可视化:ECharts使用

可视化介绍 ​  ​  应对现在数据可视化的趋势&#xff0c;越来越多企业需要在很多场景(营销数据&#xff0c;生产数据&#xff0c;用户数据)下使用&#xff0c;可视化图表来展示体现数据&#xff0c;让数据更加直观&#xff0c;数据特点更加突出。   ​  数据可视化主要目…

远程linux机器中使用camera

linux远程桌面访问时&#xff0c; 发现打不开camera&#xff0c; 需要进行下面的操作才能打开 首先查看video设备的权限 ls -la /dev/video0 crw-rw---- 1 root video 81, 0 Jul 22 19:54 /dev/video0这种情况下远程打不开&#xff0c;需添加权限 添加访问的权限&#xff1a…

openssl 生成nginx自签名的证书

1、命令介绍 openssl req命令主要的功能有&#xff0c;生成证书请求文件&#xff0c; 查看验证证书请求文件&#xff0c;还有就是生成自签名证书。 主要参数 主要命令选项&#xff1a; -new :说明生成证书请求文件 -x509 :说明生成自签名证书 -key :指定已…

【大数据】Flink 内存管理(一):设置 Flink 进程内存

Flink 内存管理&#xff08;一&#xff09;&#xff1a;设置 Flink 进程内存 1.配置 Total Memory2.JVM 参数3.根据比例限制的组件&#xff08;Capped Fractionated Components&#xff09; Apache Flink 通过严格控制各种组件的内存使用&#xff0c;在 JVM 上提供高效的工作负…

全面解析企业财务报表系列之四:财务报表的真实性和可靠性

全面解析企业财务报表系列之四&#xff1a;财务报表的真实性和可靠性 一、什么是会计方法二、选择会计方法三、会计方法的重要性四、会计报表常用的造假手段五、财务报表经常被遗漏的重要事件六、财务报告造假的资信敏感性七、财务报告审计的重要性八、审计报告 一、什么是会计…

微信小程序商城-兜点零食

微信小程序商城 【微信小程序商城-兜点零食】 小程序采用uniappvue开发&#xff0c;后台djangopython开发&#xff0c;模块化方便二次开发 1、具备商城完整功能&#xff0c;包括在线下单、支付、订单跟踪、物流查询&#xff1b; 2、具备社交化分享功能&#xff0c;为用户提供分…

2024年数学建模美赛详细总结以及经验分享

前言&#xff1a; 本文记录与二零二四年二月六日&#xff0c;正好今天是数学建模结束&#xff0c;打算写篇文章记录一下整个过程&#xff0c;以及一些感受、还有经验分享。记录这个过程的原因就是我在赛前&#xff0c;在博客上找了很久&#xff0c;也没有像我这么类似记…

LeetCode刷题小记 三、【哈希表】

1. 哈希表 文章目录 1. 哈希表写在前面1.1 理论基础1.2 有效的字母异位词1.3 两个数组的交集1.4 快乐数1.5 两数之和1.6 四数相加||1.7 赎金信1.8 三数之和&#xff08;哈希法梦碎的地方&#xff09;1.9 四数之和 Reference 写在前面 本系列笔记主要作为笔者刷题的题解&#x…

WebServer -- 定时器处理非活动连接(下)

目录 &#x1f382;前言 &#x1f33c;定时器设计 &#x1f600;容器设计 &#x1f33c;任务处理函数 &#x1f6a9;源码分析&#xff08;定时器的使用&#xff09; &#x1f382;前言 PS&#xff1a;写博客 -- 巩固项目基础过程中&#xff0c;可以通过 GPT Google cpp…