在 RSA 加密算法中,如何找到 和 的因数p,q是e已知的。我试图搜索但找不到任何来源。任何提示、参考或解决方案就足够了。dn
(e,n)和(d,n)分别是公钥和私钥,n = pq.
在 RSA 加密算法中,如何找到 和 的因数p,q是e已知的。我试图搜索但找不到任何来源。任何提示、参考或解决方案就足够了。dn
(e,n)和(d,n)分别是公钥和私钥,n = pq.
我找到了一个用德语写的源代码(第 12+13 页),它描述了一种随机算法来计算p和q.
算法:
s = max { t : 2t | (ed-1) }k = (ed-1) / (2s)a数[2,n-1]g = gcd(a,n)g > 1 ⇒ g = p和q = n/g。t = s-1, ... ,0:
g = gcd( ak ⋅ 2t, n ) g < n ⇒ g = p和q = n/g。a并[2,n-1]转到3。如果选择a随机数(均匀分布),则找到p和的概率q为1/2,因此预计 2 次尝试后得到解。
这个工作的证明与中国剩余定理有关。
备注:如果您已经拥有私钥,则很可能没有理由计算 的因数,因为同n一个 的密钥永远不会超过一对。但是你可以使用这个算法来证明破解 RSA 和分解一样难。(RSA 并不比因式分解更难,因为如果你有和,你可以简单地计算私钥)。(e,d)nndpq