导航:首页 > 源码编译 > rsa算法解密过程

rsa算法解密过程

发布时间:2024-10-16 10:01:13

Ⅰ RAS加解密详解

RSA算法是现今使用最广泛的公钥密码算法,也是号称地球上最安全的加密算法。在了解RSA算法之前,先熟悉下几个术语
根据密钥的使用方法,可以将密码分为对称密码和公钥密码
对称密码:加密和解密使用同一种密钥的方式
公钥密码:加密和解密使用不同的密码的方式,因此公钥密码通常也称为非对称密码。

RSA的加密过程可以使用一个通式来表达

也就是说RSA加密是对明文的E次方后除以N后求余数的过程。就这么简单?对,就是这么简单。
从通式可知,只要知道E和N任何人都可以进行RSA加密了,所以说E、N是RSA加密的密钥,也就是说 E和N的组合就是公钥 ,我们用(E,N)来表示公钥

不过E和N不并不是随便什么数都可以的,它们都是经过严格的数学计算得出的,关于E和N拥有什么样的要求及其特性后面会讲到。顺便啰嗦一句E是加密(Encryption)的首字母,N是数字(Number)的首字母

RSA的解密同样可以使用一个通式来表达

也就是说对密文进行D次方后除以N的余数就是明文,这就是RSA解密过程。知道D和N就能进行解密密文了,所以D和N的组合就是私钥

从上述可以看出RSA的加密方式和解密方式是相同的,加密是求“E次方的mod N”;解密是求“D次方的mod N”
此处D是解密(Decryption)的首字母;N是数字(Number)的首字母。

小结下

既然公钥是(E,N),私钥是(D,N)所以密钥对即为(E,D,N)但密钥对是怎样生成的?步骤如下:

准备两个质数p,q。这两个数不能太小,太小则会容易破解,将p乘以q就是N

L 是 p-1 和 q-1的最小公倍数,可用如下表达式表示

E必须满足两个条件:E是一个比1大比L小的数,E和L的最大公约数为1
用gcd(X,Y)来表示X,Y的最大公约数则E条件如下(gcd释义:greatest common divisor>):

之所以需要E和L的最大公约数为1是为了保证一定存在解密时需要使用的数D。现在我们已经求出了E和N也就是说我们已经生成了密钥对中的公钥了。

数D是由数E计算出来的。D、E和L之间必须满足以下关系:

只要D满足上述2个条件,则通过E和N进行加密的密文就可以用D和N进行解密。
简单地说条件2是为了保证密文解密后的数据就是明文。
现在私钥自然也已经生成了,密钥对也就自然生成了。
小结下:

我们用具体的数字来实践下RSA的密钥对对生成,及其加解密对全过程。为方便我们使用较小数字来模拟。

我们准备两个很小对质数,
p = 17
q = 19
N = p * q = 323

L = lcm(p-1, q-1)= lcm(16,18) = 144
144为16和18对最小公倍数

求E必须要满足2个条件:1 < E < L ,gcd(E,L)=1
即1 < E < 144,gcd(E,144) = 1
E和144互为质数,5显然满足上述2个条件
故E = 5

此时 公钥=(E,N)= (5,323)

求D也必须满足2个条件:1 < D < L,E*D mod L = 1
即1 < D < 144,5 * D mod 144 = 1
显然当D= 29 时满足上述两个条件
1 < 29 < 144
5*29 mod 144 = 145 mod 144 = 1
此时 私钥=(D,N)=(29,323)

准备的明文必须时小于N的数,因为加密或者解密都要mod N其结果必须小于N
假设明文 = 123

解密后的明文为123。

至此RSA的算法原理已经讲解完毕

Ⅱ RSA加密/解密和签名/验签过程理解

加密是为了防止信息被泄露

签名是为了防止信息被篡改

第一个场景:战场上,B要给A传递一条消息,内容为某一指令。

RSA的加密过程如下:

(1)A生成一对密钥(公钥和私钥),私钥不公开,A自己保留。公钥为公开的,任何人可以获取。

(2)A传递自己的公钥给B,B用A的公钥对消息进行加密。

(3)A接收到B加密的消息,利用A自己的私钥对消息进行解密。

在这个过程中,只有2次传递过程,第一次是A传递公钥给B,第二次是B传递加密消息给A,即使都被敌方截获,也没有危险性,因为只有A的私钥才能对消息进行解密,防止了消息内容的泄露。

第二个场景:A收到B发的消息后,需要进行回复“收到”。

RSA签名的过程如下:

(1)A生成一对密钥(公钥和私钥),私钥不公开,A自己保留。公钥为公开的,任何人可以获取。

(2)A给B发送消息,A先计算出消息的消息摘要,然后使用自己的私钥加密消息摘要,被加密的消息摘要就是签名.并将签名和消息本身(签名原文)一起传递给B.(A用自己的私钥给消息摘要加密成为签名)

(3)B收到消息后,也会使用和A相同的方法提取消息摘要,然后用A的公钥解密签名,并与自己计算出来的消息摘要进行比较-->如果相同则说明消息是A发送给B的,同时,A也无法否认自己发送消息给B的事实.(B使用A的公钥解密签名文件的过程,叫做"验签")

在这个过程中,只有2次传递过程,第一次是A传递加签的消息和消息本身给B,第二次是B获取A的公钥,即使都被敌方截获,也没有危险性,因为只有A的私钥才能对消息进行签名,即使知道了消息内容,也无法伪造带签名的回复给B,防止了消息内容的篡改。

但是,综合两个场景你会发现,第一个场景虽然被截获的消息没有泄露,但是可以利用截获的公钥,将假指令进行加密,然后传递给A。第二个场景虽然截获的消息不能被篡改,但是消息的内容可以利用公钥验签来获得,并不能防止泄露。所以在实际应用中,要根据情况使用,也可以同时使用加密和签名,比如A和B都有一套自己的公钥和私钥,当A要给B发送消息时,先用B的公钥对消息加密,再对加密的消息使用A的私钥加签名,达到既不泄露也不被篡改,更能保证消息的安全性。

总结:公钥加密、私钥解密、私钥签名、公钥验签。

Ⅲ 一个RSA算法的加密运算,需要完整的演算过程。

RSA算法非常简单,概述如下:
找两素数p和q
取n=p*q
取t=(p-1)*(q-1)
取任何一个数e,要求满足e<t并且e与t互素(就是最大公因数为1)
取d*e%t==1
这样最终得到三个数:
n
d
e
设消息为数M
(M
<n)
设c=(M**d)%n就得到了加密后的消息c
设m=(c**e)%n则
m
==
M,从而完成对c的解密。
注:**表示次方,上面两式中的d和e可以互换。
在对称加密中:
n
d两个数构成公钥,可以告诉别人;
n
e两个数构成私钥,e自己保留,不让任何人知道。
给别人发送的信息使用e加密,只要别人能用d解开就证明信息是由你发送的,构成了签名机制。
别人给你发送信息时使用d加密,这样只有拥有e的你能够对其解密。
rsa的安全性在于对于一个大数n,没有有效的方法能够将其分解
从而在已知n
d的情况下无法获得e;同样在已知n
e的情况下无法
求得d。
rsa简洁幽雅,但计算速度比较慢,通常加密中并不是直接使用rsa
来对所有的信息进行加密,
最常见的情况是随机产生一个对称加密的密钥,然后使用对称加密算法对信息加密,之后用
RSA对刚才的加密密钥进行加密。
最后需要说明的是,当前小于1024位的N已经被证明是不安全的
自己使用中不要使用小于1024位的RSA,最好使用2048位的。

Ⅳ 一个RSA算法的加密运算,需要完整的演算过程。

我来回答你可以闭帖了,呵呵
看你题目的意思就是打算把republic这个词按照你的方法装换成数字例如是:X
p=3,q=11
n=p*q=33
t=(p-1)*(q-1)=20
取任何一个数e,要求满足e<t并且e与t互素(就是最大公因数为1)
我们可以取e=7
要求d*e%t==1(D*e除以t取余等于1),我们可以找到D=3
此时我们就有了三个数
n=33
d=3 公钥
e=7 私钥

设消息为数M (M <n)
设c=(M**d)%n就得到了加密后的消息c
设m=(c**e)%n则 m == M,从而完成对c的解密。
注:**表示次方,上面两式中的d和e可以互换。

我们可以对republic词按照你的方法装换成数字:X一位一位的加密。
加入X的第一位是6(别的同理)
则:M = 6
加密时:(c为加密后的数字)
c=(M**d)%n=(6^3)%33=216%33=18(商6余18),则6加密后就是18了
解密时:
设m=(c**e)%n则 m == M,
(18^7)%33=612220032%33=6(商18552122余6)
到此加密解密完成。
至于怎么把republic装换成X,把X装分成多少部分进行分批加密,你可以自己决定。但是加密的数字M 需要小于n

如果需要给你写个程序,留个Email,我空的时候写个发给你。

我个人给你个方法,因为n=33 >26(26个英文字母),所以可以把republic分成一个字母一个字母的加密。
按你的分发 REP 就分成数字
18 05 16
加密
(18^3)%33=5832%33= 24
(05^3)%33=125%33= 26
(16^3)%33=%33= 4
所以加密后就是
24 26 04 转换成字母就是 XZD
解密
(24^7)%33=4586471424%33=18
(26^7)%33=8031810176%33=05
(4^7)%33=16384%33=16
又变成 18 05 16 转换成字母就是 REP
是不是很简单啊~~

我如果不懂。空间里面有片文章,你可以看看,就知道我上面讲的那些是什么意思了。

RSA算法举例说明
http://hi..com/lsgo/blog/item/5fd0da24d495666834a80fb8.html

Ⅳ RSA算法举例

首先看下rsa算法:
找两素数p和q
计算n=p*q和
t=(p-1)*(q-1)
取小于n的一个数e,并且e与t互质,就是最大公约数是1
找一个数d,d满足(ed-1)
mod
t
=0
公钥取(n,e),私钥取(n,d)
现在开始分析,
已知公钥是(n=35,e=5),那么
n=p*q,p与q只能是7和5
那么t就是24
而(ed-1)%t=0
也就是(5d-1)%24=0,那么可以取d为5
所以私钥是
(d=5,n=35)
解密公式:m=c^d
mod
n
=10^5
mod
35
=5
所以明文m是5

Ⅵ RSA加密解密算法的证明

1. 选择两个质数 p, q

2. 设 n =p * q

3. 求出n的欧拉函数 f = (p-1)*(q-1)

4. 在[2, f)的范围内随机找一个与f互质的数 e 作为公钥的指数

5. 算出私钥指数d,d为公钥指数e对 f 的一个模反元素,即 ed = kf +1 (k为正整数)

6. 将(n, e)封装成公钥,将(n, d)封装成私钥

1. 设被加密的数为m, m为小于n的非负整数

2. 算出 c = (m^e) % n ,则 c 即为密文

算出 (c^d)%n , 即为被加密的数m,证明如下。

因为  c=m^e - n*g,其中g为非负整数,

所以  (c^d)%n = [ (m^e - n*g) ^ d ] % n

展开多项式后将n的整数倍的项去除,得到

[( m^e )^d] % n

=[ m^(e*d) ] % n

=[ m^(k*f+1) ] % n

=[ m * m^(k*f) ] % n

={ m * [ (m^f) ^ k] } % n

接下来分三种情况讨论:

第一种情况:m=0或者m=1

则 { m * [ (m^f) ^ k] } % n = m

第二种情况:m>1,且m与n互质

根据  欧拉定理   ,m^f = h*n+1,其中h为正整数

则 { m * [ (m^f) ^ k] } % n

={ m * [ ( h*n+1 ) ^ k] } % n

={ m * [ i*n + 1 ] } % n    (其中i为展开指数多项式后合并n的同类项得到的正整数)

=m%n 

=m  (因为m<n)

第三种情况:m>1,且m与n不互质

因为n=p*q, 且p, q均为质数,则 m=j*p或者j*q, 其中j为正整数

当m=j*p时, 因为m<n, 所以m与q互质

(证明:如果m, q不互质,则m含有质因数q,因为p与q互质, 所以 j 含有质因数p, 这与m<n矛盾)

根据欧拉定理 m^(q-1)=x*q+1 ,其中x为正整数

则 { m * [ (m^f) ^ k] } % n

= { m * [ ( m^[(p-1)*(q-1)] ) ^ k] } % n

={ m * [ m^(q-1)^(p-1)^k ] } % n

={ j * p * [ ( x*q+1 )^ (p-1)^k ] } % n

={ j * p * [ y*q + 1 ] } % n    (其中y为展开指数多项式后合并q的同类项得到的正整数)

=(j*p*y*q + m ) %n

=(j*y*n+m) % n

=m

同理,当m=j*q时也成立。

证明完毕。

RSA解密正确性证明_国科大网安二班的博客-CSDN博客

https://blog.csdn.net/weixin_46395886/article/details/114700012#:~:text=RSA%E8%A7%A3%E5%AF%86%E6%AD%A3%E7%A1%AE%E6%80%A7%E8%AF%81%E6%98%8E%20%E5%85%88%E6%8F%8F%E8%BF%B0%E4%B8%80%E4%B8%8BRSA%E5%AF%86%E7%A0%81%E4%BD%93%E5%88%B6%EF%BC%9A%20RSA%E5%AF%86%E7%A0%81%E4%BD%93%E5%88%B6%EF%BC%9A%20%E5%A4%A7%E7%B4%A0%E6%95%B0%20p%2Cq%20%EF%BC%8C%E6%A8%A1%E6%95%B0,n%20%3D%20pq%20%EF%BC%8C%E5%8A%A0%E5%AF%86%E6%8C%87%E6%95%B0%20b%20%EF%BC%8C%E8%A7%A3%E5%AF%86%E6%8C%87%E6%95%B0

RSA算法原理 - 知乎 (hu.com)

https://zhuanlan.hu.com/p/48249182#:~:text=RSA%E7%AE%97%E6%B3%95%E5%8E%9F%E7%90%86%201%20%EF%BC%881%EF%BC%89%E4%B9%99%E6%96%B9%E7%94%9F%E6%88%90%E4%B8%A4%E6%8A%8A%E5%AF%86%E9%92%A5%20%28%E5%85%AC%E9%92%A5%E5%92%8C%E7%A7%81%E9%92%A5%29%E3%80%82...,2%20%EF%BC%882%EF%BC%89%E7%94%B2%E6%96%B9%E8%8E%B7%E5%8F%96%E4%B9%99%E6%96%B9%E7%9A%84%E5%85%AC%E9%92%A5%EF%BC%8C%E7%84%B6%E5%90%8E%E7%94%A8%E5%AE%83%E5%AF%B9%E4%BF%A1%E6%81%AF%E5%8A%A0%E5%AF%86%E3%80%82%203%20%EF%BC%883%EF%BC%89%E4%B9%99%E6%96%B9%E5%BE%97%E5%88%B0%E5%8A%A0%E5%AF%86%E5%90%8E%E7%9A%84%E4%BF%A1%E6%81%AF%EF%BC%8C%E7%94%A8%E7%A7%81%E9%92%A5%E8%A7%A3%E5%AF%86%E3%80%82

阅读全文

与rsa算法解密过程相关的资料

热点内容
比心app怎么样用 浏览:739
和平精英怎么改国际服的服务器 浏览:944
手机存储卡128是哪个文件夹 浏览:180
安北解压包密码 浏览:649
阿里巴巴app静态编译 浏览:723
命令世界怎么获得迷你币 浏览:649
应用加密重新安装 浏览:83
抖音抖币充值源码 浏览:734
我的世界如何去更新服务器 浏览:73
单片机视频模块 浏览:996
程序员的图中的亮点在哪里 浏览:657
苹果手机服务器地址是什么意思 浏览:461
云服务器里面怎么升级d盘 浏览:546
java文件存入数据库 浏览:89
雷特字幕出现未发现加密锁 浏览:768
java线程监视 浏览:947
无聊的程序员日常 浏览:803
云服务器ecs项目 浏览:23
健康证服务器地址是什么意思 浏览:196
惠普笔记本提取压缩软件 浏览:773