RSA 非对称加密

用户A 〈 —– 〉 用户B

第一步, 算出公钥私钥

1 找出质数 p, q

2 n = p * q

3 f(n) = (p-1)(q-1)欧拉函数

4 算出公钥 e : 1 < e < f(n) 之间的一个整数

5 e 和 f(n) 之间要互质

6 算出私钥 d :

  e * d 除以 f(n) 余数为 1

第二步,加密明文

明文为 m ,

 m^e 除以 n , 求余数 c ,c 即为密文

第三步, 解密密文

c ^d 除以n 求余数 m ,同即为明文

第四步,安全性如何呢?

经历以上几个步骤之后,在网络中传播的有以下几个因素:


| 传播 | n , e , c | 用户B |

| 解密 | n , d , c | 用户A |

由于d ,即私钥只有用户A知道,所以只有用户A可以解密出明文。

疑问: 能不能从 e 公钥来推导出 d 私钥呢?

答: 回顾以上第一步, 要知道 d , 首先要知道f(n),而求f(n),必须要知道p, q

       f(n)
e ---------------> d 

n = p * q 

RSA常用的是一个1024位二进制数 n , 想对它进行质因数分解以目前的技术算力来说,是算不出来的。

不过随着量子计算机的出现,RSA加密算法即将失去它的作用。

参考维基百科