RSA加密原理是由欧拉定理演化而来的,先介绍一下欧拉定理:
其中,m与N互质,是欧拉函数
欧拉函数值等于:
在小于n的正整数中,有多少与n互质的数。例如:,比6小的只有1和5与6互质。
对于欧拉定理两边同时相乘k次得:
然后两边同时乘以m得:
记此式为(1)
下来我们看RSA算法加解密过程:
加密: (e,N是公钥,m是明文,c是密文)
解密: (d,N是公钥,c是密文,m是明文)
将上述两式带入合并得:
记此式为(2)
现在对比式(1)和式(2),可以等效得到:
上式等效于:
即给定公钥e和N(同时公钥e的选取要与互质),私钥d就是靠这个公式得到的。
但是为什么这样就能实现加密呢?
通常情况下,N的取值会非常大,的求解即大数质因数分解是非常耗CPU时间的,通常甚至计算机要耗费数月去求解才能够得出结果,而那个时候密钥基本已经没有时效价值了。
那这样我们岂不是也很难得到 的值?
当然不是了,我们可以利用"构造"的方法,有这样两个公式:
,N为素数, 例如
,p、q为素数
将上述两式带入得到:
,p、q为素数
进一步拓展上式可得:
令,则N也是素数,得:
所以我们可以选取很多个素数相乘得到一个大素数N,然后通过我们的公式快速地计算得到的值,但是别人想得到
继而得到私钥d,就只能计算机进行大素数质因数分解而耗费上数月时间,这就是RSA的加密原因所在。
但前两天看到中科大光量子计算机原理验证机二代已经研制出来了,光量子计算机比超算都快亿亿亿倍,也就是说,等以后,量子计算机成熟时,就是RSA加密无用时了。