RSA加密算法详解

什么是RSA算法?

RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被普遍使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一块儿提出的。当时他们三人都在麻省理工学院工做。RSA就是他们三人姓氏开头字母拼在一块儿组成的。算法

大数的质因素分解决定RSA算法的可靠性,让合理时间内破解加密数据成为不可能。安全

要了解RSA加密算法首先要了解素数函数

什么是非对称加密?

非对称加密须要两个密钥,一个公开密钥一个私有密钥。post

使用公钥加密的数据只能用私钥解开,因此公钥能够公开给他人,而私钥要保护起来。测试

其实公钥就像,私钥就像钥匙,把给别人锁住数据,而后传递回来用钥匙解开取出数据。这样就算中途被他人截获了没有钥匙也无法查看数据内容。ui

欧拉函数

欧拉函数是说,对正整数 n,欧拉函数 \phi(n) 是小于或等于 n 的正整数中与 n 互质的数的数目。加密

好比 \phi(8) = 4 由于 81,3,5,7 互质。code

有一种状况 \phi(n) 很好计算就是当 n 等于素数时,由于素数和小于它的全部正整数互质,因此当 n 等于素数时 \phi(n) = n-1 ,且当 a,b 都是素数时get

\phi(a×b)=\phi(a)×\phi(b)

欧拉定理

欧拉定理(也称费马-欧拉定理)是一个关于同余的性质。io

欧拉定理代表,若 n,a 为正整数,且 n,a 互素,则

a^{\phi(n)}\equiv1\ (mod\ n)

RSA加密算法

RSA加密算法是根据一个容易运算可是若是没有特殊信息逆运算很是困难的函数,

m^e\ mod\ n \equiv c,这很是容易计算 c ,可是给定 e,n,c 却很困可贵到 m

那么怎么让它的逆运算也容易呢?

要有一个 dc^d\equiv m\ (mod\ n) 成立,这公式也能够写成 m^{e×d}\equiv\ m\ (mod\ n) ,这样只要知道 d 就能够获得 m 了。

那么怎么计算 d ,这时候就要用到欧拉定理

m^{\phi(n)}\equiv1\ (mod\ n)

也能够写成

m^{k×\phi(n)+1}\equiv m\ (mod\ n)

就是将原等式的任何数k次方,而后再乘以m

m^{e×d}\equiv m\ (mod\ n)m^{k×\phi(n)+1}\equiv m\ (mod\ n)

就能够算出d等于

\frac{k×\phi(n)+1}e

这时e就至关于公钥,d就至关于私钥。

那么RSA加密算法过程为:

1)第一步是首先找出两个大质数 p1,p2 ,大质数可使用两步生成。(具体能够看费马小定理

  1. 随机生成一个大数
  2. 测试是否是素数

而后将 p1,p2 相乘获得 n ,根据欧拉定理可知 \phi(n)=(p1-1)×(p2-1)

2)第二步找到一个奇数 e ,并且与 \phi(n) 互质。

3)根据上面公式计算出一个正整数 d ,(有人证实若是 d<\frac{1}3×n^{\frac{1}4} 能够根据 n,e 颇有效的推出 d ,因此 d 必须足够大)

4)将 en 发送给他人加密数据(m),获得 c\equiv m^e\ (mod\ n) (消息 m 是小于 n 的正整数,若是 m 太大能够分段)。

5)取回加密数据 cc^d\ mod\ n 就等于消息 m

安全性

根据上面步骤能够看出要破解加密必需要获得 d ,而获得 d 就要找到 p1,p2 ,这就要对 n 进行质因素分解,然而根据如今计算机的速度对一个大数在一个合理时间内质因素分解很是困难。

相关文章
相关标签/搜索