from gmpy2 import powmod, iroot, invert
from Cryptodome.Util.number import long_to_bytes
with open('output.txt', 'r') as f:
code = f.read()
exec(code)
'''
n = p * q
s = pow(557*p - 127*q, n - p - q, n)
Eular: a ^ phi(n) = 1 (mod n)
phi(n) = (p-1) * (q-1) = n - p - q + 1
s = a ** (n-p-q) = a ** (n - p - q - phi(n)) = a ** (-1)
'''
a = powmod(s, -1, n) # a = 557 * p - 127 * q
# n = p * q
# q = (557 * p - a) / 127
# n = p * (557 * p - a) / 127
# 127 * n = p * (557 * p - a)
# 557 * p^2 - a * p - 127 * n = 0
delta = a ** 2 - 4 * 557 * (-127 * n)
p = (a + iroot(delta, 2)[0]) // (2 * 557)
q = n // p
mod = (p-1) * (q-1)
e = 0x10001
d = invert(e, mod)
m = powmod(c, d, n)
print(long_to_bytes(m))
【Write Up】babyrsa
19011343447 2025-08-21 21:47:04 38 0 返回题目详情


作者:19011343447
18
提交0
收入相关WriteUP
-
你懂我的乐谱吗?
***收费WriteUP请购买后查看,VIP用户可免费查看***
- Crypto
- 4年前
-
Funny Number
***收费WriteUP请购买后查看,VIP用户可免费查看***
- Crypto
- 4年前
-
给你私钥吧
***收费WriteUP请购买后查看,VIP用户可免费查看***
- Crypto
- 4年前
-
Double
***收费WriteUP请购买后查看,VIP用户可免费查看***
- Crypto
- 4年前
-
你以为是md5吗
***收费WriteUP请购买后查看,VIP用户可免费查看***
- Crypto
- 4年前