上一节的内容中我们说了如何验证RSA中随机挑选的素数
然后我们根据两个大素数p和q (p!= q ) ,例如素数p和q
然后 n = p*q , 然后φ(n)=φ(p) * φ(q) = (p-1) * ( q-1 )
记住n = p * q 这个数会用到
然后选取与φ(n)互质的奇数 e (比φ(n)小)
然后我们要求解
e*d 和 1 mod(φ(n)) 同余
利用上面的结论求解 d
那么在线性同余方程中当 e 和 φ(n) 互为素数(互质) 有一个定理保证 e mod φ(n) 的解存在 也就是d存在 ( 这也是为什么我们在选择e时要求互质)
简单证明下 gcd(e , φ(n) ) = 1 那么存在一个线性组合
gcd(e , φ(n) ) = 1 》》a * e + b * φ(n)= 1 》》 a * e + b *φ(n) 和 1mod(φ(n)) 同余
b * φ(n) mod φ(n) == 0 》》 a * e 和 1 mod(φ(n)) 同余
接着我们用拓展欧几里得求解
算法导论里有
这里我们写个
设d=x
(e * x -1)= φ(n)y 》》 e x +(这里符号放y里) φ(n) * y = 1
求解x
pair<