RSA加密算法的肤浅理解

RSA加密算法是由三个NB的学霸提出的,以他们三人名字的首字母,命名为RSA算法
简单来讲,就是通过一定的方法得到三个数字a,b,r,这三个数字
公钥就是(r,a),私钥就是(r,b)
这里写图片描述
对于加密前的数据M,可以通过算式(1),带入两个参数a,r得到加密后的密文C
解密时,通过算式(2),以及C,b,r,就的算出M的值

密钥生成的步骤

一、随机选两个大质数p,q
二、计算两个大质数的乘积:r = pq
三、根据欧拉函数,求得小于或等于N的正整数中与N互质的数的数目:t=(p-1)(q-1)
四、选取任意小于t并且与t互素的整数a,求a关于t的模反元素,得到b

这样,就得到了三个数a,b,r,这样的三个数,就可以让M,C满足上述的1,2表达式
如果只知道公钥(r,a),来计算出b,是一件很困难的事情,要计算b就需要知道t,要知道t,就需要知道p和q,即需要把r分解为两个质数的乘积

示例:

1.选取13,23两个质数
2.计算r=13*23 = 299,299的二进制为:100101011,一共有9位,这个密钥就是9位,一般情况下,RSA密钥是1024位
3.计算t = 264
4.任意选取小于264与264互素的整数:5,计算出5关于264的模反元素为:53,即5*53 =265,265%264=1;
公钥为(299,5),私钥为(299,53)
5.加密过程:
原文为:30
则30^5 = C(mod 299),求得C为:270,即30^5的乘积对299取模结果为270
270即为密文
6.解密过程:
270^53 = M(mod 299),求得M为:30,即270^53的乘积对299取模结果为30

知道了公钥(299,5)还有密文270,想要解密,先需要求出私钥,就要先因数分解299,当这个数比较大时,因数分解就是一件十分困难的事情了

猜你喜欢

转载自blog.csdn.net/u013531215/article/details/45747149