SSL 协议 就采用了这个算法

  1. 算出两个大的素数 p 和 q
  2. 计算 ,计算其 欧拉函数 作为后面中间变量
  3. 选择一个整数 e,满足
  4. 通过 e 计算逆元 d,满足
  5. 为公钥, 为私钥(虽然解密只用到了 d 和 n)

设定

加密:

解密:

RSA assumption


下面证明正确性:

要证明:

因为:

即证:

如果 m 和 n 互素,由 欧拉定理 得肯定成立:(两边再乘一次 m 就是了)

如果 m 和 n 不互素(这种概率可以忽略不计了):

那么 m 一定是 p 或 q 的倍数

不妨设

这时

存在 r 使得:

即:


已知  ,  和  ,分解  

https://www.cnblogs.com/meancoder/p/RSA-given-e-d-n-factorize-n.html

所以密钥组中泄露任意一个都是能够推出所有东西的

如果已知两组 n e c ,其中 n 相等,e 互素,利用共模攻击可以求出 m