Python p==q时的RSA加密
2天前我参加了DawgCTF。 我正要解决RSA问题,但我无法解决 给出了DawgCTF的RSA问题的n,e,c 所以,我用factordb分解了n,n的结果是一个素数的平方Python p==q时的RSA加密,python,cryptography,rsa,ctf,Python,Cryptography,Rsa,Ctf,2天前我参加了DawgCTF。 我正要解决RSA问题,但我无法解决 给出了DawgCTF的RSA问题的n,e,c 所以,我用factordb分解了n,n的结果是一个素数的平方 我从未见过RSA加密中p和q相同的情况。 无论如何,我将phi设为(p-1)(q-1)并编写如下代码。(φ是指欧拉的φ) 但是,它不起作用 在CTF之后,我找了一篇文章,他没有把phi写成(p-1)^2,而是写成p*(p-1)。 但是,我不知道为什么。。。 当p==q时,为什么φ应该是p*(p-1) 如果你能解释的话,我
我从未见过RSA加密中p和q相同的情况。 无论如何,我将phi设为(p-1)(q-1)并编写如下代码。(φ是指欧拉的φ) 但是,它不起作用 在CTF之后,我找了一篇文章,他没有把phi写成(p-1)^2,而是写成p*(p-1)。 但是,我不知道为什么。。。 当p==q时,为什么φ应该是p*(p-1)
如果你能解释的话,我真的很感激。中的第一个等号φ(p*q)=φ(p)*φ(q)=(p-1)*(q-1)假设
p
和q
是互质(参见),而第二个等号假设p
和q
是素数(参见,k=1
)p=q
违反了第一个条件,这就是为什么此关系对p=q
无效的原因
另一方面,对于k=2
,它来自phi(p*p)=p*(p-1)
,即p=q
的CTF解决方案中使用的关系
但是,对于实际中的RSA,p!=q
是先决条件,请参见和(否则可以快速确定p
和q
:p=q=sqrt(N)
)
from Crypto.Util.number import inverse, long_to_bytes
import string
n = ~~~
e = 65537
c = ~~~
p = ~~~ # I omit q because p==q
phi = (p-1) * (p-1)
d = inverse(e, phi)
m = pow(c, d, n)
m = long_to_bytes(m)
print(m)