RSA加密算法详细解说[通俗易懂]

RSA加密算法详细解说[通俗易懂]RSA加密算法是一种非对称加密算法,于1977年由罗纳德·李维斯特(RonRivest)阿迪·萨莫尔(AdiShamir)伦纳德·阿德曼(LeonardAdleman)一起提出的。RSA的优势:对极大整数做因数分解的难度决定了RSA算法的可靠性,对一极大整数做因数分解愈困难,RSA算法愈可靠加密由公钥,私钥,明文,密文,四部分组成。质数与互质数一个大于1的自然数,除了1和它本身…

大家好,又见面了,我是你们的朋友全栈君。

RSA加密算法是一种非对称加密算法,于1977年由
罗纳德·李维斯特(Ron Rivest)
阿迪·萨莫尔(Adi Shamir)
伦纳德·阿德曼(Leonard Adleman)一起提出的。

RSA的优势:对极大整数做因数分解的难度决定了RSA算法的可靠性,对一极大整数做因数分解愈困难,RSA算法愈可靠

加密由公钥,私钥,明文,密文,四部分组成。

质数与互质数

一个大于1的自然数,除了1和它本身外,不能被其他自然数整除(除0以外)的数称之为质数(素数);否则称为合数。

例如,15=3×5,所以15不是素数
13除了等于13×1以外,不能表示为其它任何两个整数的乘积,所以13是一个素数
1不是质数,也不是合数
公约数只有1的两个数,叫做互质数

取模运算

也就是求余数
例如,10 mod 3 = 1(10%3=1) 、26 mod 6 = 2 、28 mod 2 = 0

同余定理

“≡”是数论中表示同余的符号
同余的定义如下:
给定一个正整数m,如果两个整数a和b满足a – b能被m整除,即(a – b)modm=0,
那么就称整数a与b对模m同余,记作a ≡ b ( mod m),同时可成立a mod m = b
注意,同余与模运算是不同的
显然,有如下事实
(1)若a≡0(mod m),则m|a;
(2)a≡b(mod m)等价于a与b分别用m去除,余数相同。

欧拉函数

任意给定正整数n,计算在小于等于n的正整数之中,有多少个与n构成互质关系?计算这个值的方法就叫做欧拉函数,以φ(n)表示.

例如,在1到8之中,与8形成互质关系的是1、3、5、7,所以φ(n)=4

在RSA算法中,欧拉函数对以下定理成立
1.如果n可以分解成两个互质的整数之积,即n=p×q,则有:φ(n)=φ(pq)=φ( p )φ( q );
2.当p为质数,φ( p )=p-1

所以有φ(n)=(p-1)(q-1)

欧拉定理与模反元素

欧拉函数的用处,在于欧拉定理
“欧拉定理”指的是:
如果两个正整数a和n互质,则n的欧拉函数φ(n)可以让下面的等式成立:
a^φ(n)≡1(modn)
也就是说,a的φ(n)次方被n除的余数为1

模反元素的推导过程如下:
根据欧拉定理,有:
a^φ(n) = a × a^(φ(n)−1)≡1(modn)

b=a^(φ(n)−1),得:

ab≡1(modn)
b就是a的模反元素
所以,如果两个正整数a和n互质,那么一定可以找到整数b使得ab-1被n整除,或者说ab被n除的余数是1

所以求私钥d的公式:d*e≡1mod[(p-1)(q-1)]

其中{φ(n) = (p-1)(q-1),φ(n) 与e互质,k为正整数}
可化为:d= (k*φ(n)+1)/e

推导公式:d*e≡1mod φ(n)

可得:(d*e-1) / φ(n) =k

即:d = (k*φ(n)+1) / e

在这里插入图片描述

RSA密钥一般是1024位(安全)

由p,q,dp,dq,c求明文的算法

代码如下:

import gmpy2
I = gmpy2.invert(q,p)
mp = pow(c,dp,p)
mq = pow(c,dq,q)               #求幂取模运算

m = (((mp-mq)*I)%p)*q+mq       #求明文公式

print(hex(m))          #转为十六进制

一切以解题为目的的抄代码都是没有灵魂的,我们还是要从数学理论上去分析解决它,再去写代码。
在这里插入图片描述

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/130540.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月14日 上午9:16
下一篇 2022年6月14日 上午9:36


相关推荐

  • oracle模糊批量查询,Oracle 模糊查询方法

    oracle模糊批量查询,Oracle 模糊查询方法在这个信息量剧增的时代 如何帮助用户从海量数据中检索到想要的数据 模糊查询是必不可少的 那么在 中模糊查询是如何实现的呢 一 我们可以在 where 子句中使用 like 关键字来达到 Oracle 模糊查询的效果 在 Where 子句中 可以对 datetime char varchar 字段类型的列用 Like 关键字配合通配符来实现模糊查询 以下是可使用的通配符 1 零或者多个字符 使用 有三种

    2026年3月19日
    2
  • Win10安装Matlab R2017a技术指导

    Win10安装Matlab R2017a技术指导下面带来win1064-bitMatlab2017a的安装过程,亲测,可用。(一)所需文件及下载地址1.Matlab-R2017a-ISO镜像文件链接:https://pan.baidu.com/s/1pNhyKGF密码:cgt22.破解文件链接:https://pan.baidu.com/s/1nwWDgKh密码:4fwa链接:https://pan.ba

    2022年5月6日
    53
  • 电脑搭建代理服务器_windows7代理服务器设置

    电脑搭建代理服务器_windows7代理服务器设置完成即可使用(服务器IP+设置的代理端口)连接代理服务器进行访问上网

    2025年8月2日
    6
  • 7-24 约分最简分式

    7-24 约分最简分式分数可以表示为分子 分母的形式 编写一个程序 要求用户输入一个分数 然后将其约分为最简分式 最简分式是指分子和分母不具有可以约分的成分了 如 6 12 可以被约分为 1 2 当分子大于分母时 不需要表达为整数又分数的形式 即 11 8 还是 11 8 而当分子分母相等时 仍然表达为 1 1 的分数形式 输入格式 输入在一行中给出一个分数 分子和分母中间以斜杠 分隔 如 12 34 表示 34 分之 12 分子和分

    2026年3月18日
    2
  • clion 2021.4.14 激活码_通用破解码

    clion 2021.4.14 激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    167
  • 计算机图片怎么截图快捷键,电脑系统截图快捷键(电脑怎么截图)

    计算机图片怎么截图快捷键,电脑系统截图快捷键(电脑怎么截图)经常有人问我除了用 微信等截图之外还有那些办法可以截图 下面我就给大家介绍几种截图方法 电脑系统截图快捷键一 电脑键盘快速截图的快捷键 PrintScreen 有的键盘上写的是 PrintScreens 直接按下 PrintScreen 这个键就是截全屏 按下 Alt PrScrn 组合键截屏 获得当前窗口的截图 打开一个图像编辑软件如 画图 word Office 等 按下键盘快捷

    2026年3月20日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号