在RSA加密算法中知道p
,q
和e
时,如何查找d
和n
的因素。我试图搜索但找不到任何来源。任何提示,参考或解决方案都足够了。
(e,n)
和(d,n)
分别是公钥和私钥,n = pq
。
答案 0 :(得分:0)
我找到了一个source written in german (page 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次尝试。
此作品的证明与chinese remainder theorem有关。
备注:如果您已经拥有私钥,则很可能没有理由计算n
的因素,因为相同的{永远不应该有多对密钥(e,d)
{1}}。但是你可以使用这个算法来证明破坏RSA和分解n
一样困难。 (RSA并不比分解更难,因为如果你有n
和d
,你可以简单地计算私钥p
。