SSL 协议 就采用了这个算法
- 算出两个大的素数 p 和 q
- 计算 ,计算其 欧拉函数 作为后面中间变量
- 选择一个整数 e,满足
- 通过 e 计算逆元 d,满足
- 以 为公钥, 为私钥(虽然解密只用到了 d 和 n)
设定
加密:
解密:
下面证明正确性:
要证明:
因为:
即证:
如果 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