在RSA加密算法中查找p和q

时间:2014-03-19 13:57:29

标签: cryptography rsa number-theory

在RSA加密算法中知道pqe时,如何查找dn的因素。我试图搜索但找不到任何来源。任何提示,参考或解决方案都足够了。

e,n)(d,n)分别是公钥和私钥,n = pq

1 个答案:

答案 0 :(得分:0)

我找到了一个source written in german (page 12+13),它描述了一个用于计算pq的随机算法。

算法:

  1. 计算s = max { t : 2t | (ed-1) }k = (ed-1) / (2s)
  2. a
  3. 中选择一个随机数[2,n-1]
  4. compute g = gcd(a,n)
  5. 如果g > 1 ⇒ g = pq = n/g
    否则为t = s-1, ... ,0做:
    1. g = gcd( ak ⋅ 2t, n )
    2. 如果g < n ⇒ g = pq = n/g
      否则请在a中选择一个新的随机数[2,n-1],然后转到3.
  6. 如果您选择a作为随机数(均匀分布),则查找pq的概率为1/2,因此预计会获得解决方案2次尝试。

    此作品的证明与chinese remainder theorem有关。

    备注:如果您已经拥有私钥,则很可能没有理由计算n的因素,因为相同的{永远不应该有多对密钥(e,d) {1}}。但是你可以使用这个算法来证明破坏RSA和分解n一样困难。 (RSA并不比分解更难,因为如果你有nd,你可以简单地计算私钥p