RSA算法原理

RSA加密原理是由欧拉定理演化而来的,先介绍一下欧拉定理:

m^{\phi (N)}mod N =1

其中,m与N互质,\phi (n)是欧拉函数

欧拉函数值等于:

在小于n的正整数中,有多少与n互质的数。例如:\phi (6) = 2,比6小的只有1和5与6互质。

对于欧拉定理m^{\phi (n)}mod N =1两边同时相乘k次得:

m^{k\phi (N)} mod N = 1^{k}

然后两边同时乘以m得:

m^{k\phi (N)+1}mod N = m      记此式为(1)

下来我们看RSA算法加解密过程:

加密:m^{e}mod N = c     (e,N是公钥,m是明文,c是密文)

解密:c^{d}mod N=m     (d,N是公钥,c是密文,m是明文)

将上述两式带入合并得:

m^{ed}mod N = m             记此式为(2)

现在对比式(1)和式(2),可以等效得到:

ed=k\phi (N)+1   

上式等效于:

d = \frac{k\phi (N) + 1}{e}   

即给定公钥e和N(同时公钥e的选取要与\phi (N)互质),私钥d就是靠这个公式得到的。

但是为什么这样就能实现加密呢?

通常情况下,N的取值会非常大,\phi (N)的求解即大数质因数分解是非常耗CPU时间的,通常甚至计算机要耗费数月去求解才能够得出结果,而那个时候密钥基本已经没有时效价值了。

那这样我们岂不是也很难得到 \phi (N)的值?

当然不是了,我们可以利用"构造"的方法,有这样两个公式:

\phi (N) = (N-1),N为素数,                      例如\phi (5) = 4

\phi (p*q) = \phi (p) *\phi (q),p、q为素数

将上述两式带入得到:

\phi (p*q) = (p-1)*(q-1),p、q为素数

进一步拓展上式可得:

\phi (p*q*m*n*...*z) = (p-1)*(q-1)*(m-1)*(n-1)*...*(z-1)

p*q*m*n*...*z = N,则N也是素数,得:

\phi (N) = (p-1)*(q-1)*(m-1)*(n-1)*...*(z-1)

所以我们可以选取很多个素数相乘得到一个大素数N,然后通过我们的公式快速地计算得到\phi (N)的值,但是别人想得到\phi (N)继而得到私钥d,就只能计算机进行大素数质因数分解而耗费上数月时间,这就是RSA的加密原因所在。

但前两天看到中科大光量子计算机原理验证机二代已经研制出来了,光量子计算机比超算都快亿亿亿倍,也就是说,等以后,量子计算机成熟时,就是RSA加密无用时了。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值