Skip to content

一眼秒了

在做题之前可以先看一下 RSA 算法原理详解RSA 算法原理 这两篇文章,或者自己找一些文章学一下这个加密算法。

拿到题目我们可以看到这个 n 比较小,那么我们就可以考虑分解 n 得到 pq.

推荐一个在线网站 FactorDB 或者离线工具 CaptfEncoder.

分解得到 pq,随后就是常规的解密流程了。

python
from Crypto.Util.number import *
from gmpy2 import *

n= 52147017298260357180329101776864095134806848020663558064141648200366079331962132411967917697877875277103045755972006084078559453777291403087575061382674872573336431876500128247133861957730154418461680506403680189755399752882558438393107151815794295272358955300914752523377417192504702798450787430403387076153
c=48757373363225981717076130816529380470563968650367175499612268073517990636849798038662283440350470812898424299904371831068541394247432423751879457624606194334196130444478878533092854342610288522236409554286954091860638388043037601371807379269588474814290382239910358697485110591812060488786552463208464541069
p=7221289171488727827673517139597844534869368289455419695964957239047692699919030405800116133805855968123601433247022090070114331842771417566928809956044421
q=7221289171488727827673517139597844534869368289455419695964957239047692699919030405800116133805855968123601433247022090070114331842771417566928809956045093
assert p*q == n
phi = (p-1)*(q-1)
e = 65537
d = inverse(e, phi)
m = pow(c, d, n)
print(long_to_bytes(m))