【问题标题】:How to factor RSA modulus given the public and private exponent?给定公共和私有指数,如何计算 RSA 模数?
【发布时间】:2011-08-10 11:02:54
【问题描述】:

我有一个带有模数 m、公共指数 e 和私人指数 d 的 RSA 私钥,但我正在使用的程序需要模数的主要因素 p 和 q。

是否可以使用e和d得到p和q?

【问题讨论】:

  • openssl 中是否有代码来执行此任务

标签: encryption rsa


【解决方案1】:

我在加密堆栈交换上发布了一个回复,回答了相同的问题 here。它使用与 Boneh 的论文中所述相同的方法,但对它的实际工作原理做了更多解释。我还尝试假设最少的先验知识。

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    您可以使用我在 2009 年开发的开源工具,它可以在 SFM 格式 (n,e,d) 和 CRT 格式 (p,q,dp,dq,u) 之间转换 RSA 密钥,反之亦然.它在 SourceForge 上:http://rsaconverter.sourceforge.net/

    我实现的算法基于 Dan Boneh 提出的想法,如上一个答案所述。

    我希望这会有用。

    Mounir IDRASSI - IDRIX

    【讨论】:

    • 其实我需要openssl中的代码来执行这个任务,如果有的话你能提供吗
    • 您可以查看我在 SourceForge 上的项目 RsaConverter 中的 librsaconverter.c 文件:sourceforge.net/p/rsaconverter/code/HEAD/tree/Trunk/src/…。在那里你会找到函数 SfmToCrt 的实现,它根据公共模数和私有指数计算 RSA 素数。
    【解决方案3】:

    是的——一旦你知道了模数 N,以及公/私指数 d 和 e,得到 p 和 q 使得 N=pq 并不难。

    This paper 由 Dan Boneh 描述了一个这样做的算法。它依赖于 事实上,根据定义,

    de = 1 mod phi(N)。

    对于任何随机选择的“证人” 在 (2,N) 中,大约有 50% 的机会能够使用它来找到一个非平凡的 1 mod N 的平方根(称为 x)。然后 gcd(x-1,N) 给出因素之一。

    【讨论】:

    • 只是吹毛求疵:所有 RSA 需要的是 de = 1 mod p-1 和 mod q-1,所以这是 de = 1 mod lcm(p-1,q-1) 这是 phi(N) 的严格除数(使用 phi(N) 就是第一次描述 RSA 的方式)。但是,Boneh 描述的方法也适用于一般情况。
    猜你喜欢
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2014-04-16
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 2016-08-21
    相关资源
    最近更新 更多