from math import isqrt
from Crypto.Util.strxor import strxor
import gmpy2
import libnum
def fermat(n):
a = isqrt(n)
b2 = a * a - n
b = isqrt(n)
count = 0
while b * b != b2:
a = a + 1
b2 = a * a - n
b = isqrt(b2)
count += 1
p = a + b
q = a - b
assert n == p * q
return p, q
def Decrypt(c,e,p,q):
L=(p-1)*(q-1)
d=gmpy2.invert(e,L)
n=p*q
m=gmpy2.powmod(c,d,n)
return libnum.n2s(int(m))
n = 164395171965189899201846744244839588935095288852148507114700855000512464673975991783671493756953831066569435489213778701866548078207835105414442567008315975881952023037557292470005621852113709605286462434049311321175270134326956812936961821511753256992797013020030263567313257339785161436188882721736453384403
p,q= fermat(n)
e = 0x10001
c = 127749242340004016446001520961422059381052911692861305057396462507126566256652316418648339729479729456613704261614569202080544183416817827900318057127539938899577580150210279291202882125162360563285794285643498788533366420857232908632854569967831654923280152015070999912426044356353393293132914925252494215314
key = Decrypt(c,e,p,q)
cc = b'Just once,I will accompany you to see the world'
key = strxor(cc, key)
print(key)
[MoeCTF 2022]一次就好 Gqleung的WriteUp
2023-03-08 05:01・By

Gqleung
CRYPTORSA邻近素数XOR
还没有人赞赏,快来当第一个赞赏的人吧!
© 著作权归作者所有
加载中...
加载失败
广告
×
评论区
添加新评论
加载中...