RSA公钥加密算法

历史发展自行百度!

首先看一下对于明文块M和密文块C,加密和解密使用的两个公式(形式):

这里写图片描述

这里写图片描述

在这里,发送者和接受者都必须知道n和e的值,而且只有接受者知道d的值(这就是接受者的私钥,私钥很重要)。所以,这种公钥加密算法的公钥KU={e, n}, 私钥 KR={d, n}。

网络安全有关加密这部分对数学的要求还是蛮高的,这里就简单的说一下公钥和密钥的生成过程,然后通过一个例子简单使用模拟一个解密的过程:

首先选择两个素数p和q,并且计算出它们的积n,这里的n就是加密和解密过程中会使用的模。

然后计算Φ(n),计算这个是为了计算后面的e,Φ(n)的计算是使用欧拉函数计算出了小于n并且与n互素的所有整数的数量,可以使用Φ(n)=(p - 1)(q - 1)来进行计算(这样看来欧拉公式和这个结果又有什么关系?我也不太懂,说了数学基础要有的,不过可以这样理解,计算n时是使用两个素数p、q的乘积计算的,现在要计算小于n并且与n互素的所有整数的数量,那么每次乘之前减去自身,也就是每次相乘都要减去1……算了挺乱的,就这样,直接看结果)

计算完成之后,选择与Φ(n)互素并且小于Φ(n)的整数e(e和Φ(n)的最大公约数为1),这里是选择,毕竟结果不唯一,也保证了更加的安全。

最后再计算d,它是e关于modΦ(n)的乘法逆元(好吧,又有数学概念了,其实就是计算de mod Φ(n) = 1, 并且d小于Φ(n))。好了,如下例生成一个密钥:

  1. 选择两个素数p = 17 和 q = 11.
  2. 计算n = pq = 17×11 = 187.
  3. 计算Φ(n) = (p - 1)(q - 1) = 16 × 10 = 160.
  4. 选择与Φ(n) = 160 互素的数,并且小于Φ(n)的e,我们选择得到e = 7.
  5. 确定d满足de mod 160 = 1, 并且d < 160. 得到d = 23.

这个计算的过程并非可以通过公式一次性计算出来,所以慢慢蒙吧……

计算完成得到n = 187, Φ(n) = 160, e = 7, d = 23

最终确定密钥为: 公钥KU = {7, 187}, 私钥KR = {23, 187}。

然后我们通过这组密钥来对输入明文M = 88进行加密:

我们使用如下公式加密计算:
这里写图片描述

得到这里写图片描述,所以密文为11.

然后使用如下公式解密计算:
这里写图片描述

这里写图片描述, 最终得到明文为88

就是如上的一个过程,从产生密钥到对一个数据的加密以及解密的过程,然后我们来看一个题目应用一下:

在使用RSA的公钥系统中,你窃听到发送密钥为e = 5, n = 35的用户密文C = 10.对应的明文是什么?

首先我们明确几个值:

  1. e = 5, 发送者使用的公钥
  2. n = 35,加密和解密使用的模
  3. C = 10,密文

对于这样一个问题我们使用公式必须要知道d的值才能进行解密运算,我们可能要从密钥产生的步骤来出发了.

我们先确定两个素数p 和 q 的值, p和q为两个素数,乘积结果为n,得到 p = 5, q = 7. (p, q 值的得到是一个不可逆推的过程,所以当n值较大的时候,破解也是非常困难的)。

然后我们通过p、q的值计算Φ(n) = (p - 1)(q - 1) = 24, 题目告知e = 5,所以就可以计算d了:

de mod Φ(n) = 1 ====》d * 5 mod 25 = 1 ,得到的d = 5

最后通过公式进行解密:

M = 10^5 mod 35 得到明文为:5

通过上述的过程我们会发现,RSA加密算法破解的过程并非是公式化的,因为它使用的公式往往是不可逆推的,我们需要去进行尝试,当数据较小时我们很容易破解,但是当数据值增大时,我们会很明显的发现计算出现了一定的难度,可以说有时候还需要一定的运气。

RSA有两个密钥,分别是公钥和私钥,公钥可以公开出去,加密之后通过私钥来进行解密,私钥必须自己掌握,否则就等同与信息泄露了。

!!!学习过程的简单总结,不足之处还望指教!!!

  • 9
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值