在 RSA 加密算法中,如何找到 和 的因数p
,q
是e
已知的。我试图搜索但找不到任何来源。任何提示、参考或解决方案就足够了。d
n
(e,n)
和(d,n)
分别是公钥和私钥,n = pq
.
在 RSA 加密算法中,如何找到 和 的因数p
,q
是e
已知的。我试图搜索但找不到任何来源。任何提示、参考或解决方案就足够了。d
n
(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)
n
n
d
p
q