我正在解决RSA问题并且面临计算d的困难 请帮助我这个
给出p-971,q-52 Ø(n) - 506340gcd(Ø(n),e) = 1 1< e < Ø(n)
因此gcd(506340,83)= 1
e = 83。
e * d mod Ø(n) = 1
我想要计算d,我拥有所有信息 你可以帮我解决这个问题吗? (83 * d)mod 506340 = 1 我在数学上有点断裂,所以我很难从上面的等式中找到d。
答案 0 :(得分:0)
q
的值不是素数52=2^2 * 13
。因此,您无法找到d
,因为计算此数据的数学依赖于 p
和q
为素数的事实。
我建议您按照此处提供的示例http://en.wikipedia.org/wiki/RSA_%28cryptosystem%29
进行操作通常情况下,我会毫不犹豫地建议维基百科这样的链接,但作为学位课程的一部分,我在RSA项目中作为初步资源非常有用。
您需要非常胜任模块化算法才能掌握RSA的工作原理。如果你想了解如何找到d
,你需要学习找到Modular multiplicative inverse
- 只是谷歌这个,我自己也没有遇到任何错误。
一个有效的例子
我们来看p=11
,q=5
。实际上你会使用非常大的素数,但我们将手动做到这一点,我们想要更小的数字。保持这两个私有。
现在我们需要n
,这是n=pq
,我们的情况是n=55
。这需要公开。
我们需要的下一个项目是n
的 totient 。对于我们的示例phi(n)=(p-1)(q-1)
,这只是phi(n)=40
。保持私密。
现在计算加密指数e
。定义为1<e<phi(n)
和gcd(e,phi(n))=1
。 e
几乎总有许多不同的值 - 只需选择一个(在实际应用中,您的选择将由其他因素决定 - e
的不同选择使算法更容易/更难破解)。在此示例中,我们将选择e=7
。这需要公开。
最后,要计算的最后一项是d
,即解密指数。要计算d
,我们必须求解等式ed mod phi(n) = 1
。这通常使用扩展欧几里德算法计算。此算法解决了phi(n)x+ed=1
的等式1<d<phi(n)
,其中x
是一个未知的乘法因子 - 与使用mod
编写前一个等式相同。在我们的特定示例中,解决此问题会导致d=23
。这应保持私密。
然后您的公钥为:n=55
,e=7
您的私钥是:n=55
,d=23
要查看扩展欧几里德算法的工作,请查看此YouTube视频https://www.youtube.com/watch?v=kYasb426Yjk。该视频中使用的值与此处使用的值相同。
RSA很复杂,数学也很复杂。尝试使用较小的p
和q
值解决几个示例,直到您在尝试使用较大值的问题之前对该方法感到满意为止。