import gmpy2 from Crypto.Util.number import long_to_bytes
n = 60185696829890545473600170921138252864153435891956616117644363495163559822563769896054913574845863472188996832864617702604328522459504366334588582295263609846454984890704732984706982761296838507648353985279219183393135318354667468753697423633600885651727153265159767882153899093544960378089443673265025951881 e = 65537 c = 47718150793477839679806558768100680079555002273921723382643988605574000939130306295135268945769825749520550037156868227443731910814546030486586991385210729480621455049708606985496992422482157265389691283804955247415395652735364225781339696709539445429053107848713145715781012426812830318108548123420917501606
r = gmpy2.iroot(n, 2)[0]
whileTrue: if n % r == 0: p = r q = n // r break r = gmpy2.next_prime(r)
phi = (p-1)*(q-1) d = gmpy2.invert(e, phi) m = pow(c, d, n)
flag = long_to_bytes(m) print(flag) # b'flag{baby_RSA_Fermat_decompose_by_closly_pq}'
from secret import flag import random from Crypto.Util.number import bytes_to_long, getPrime
p = getPrime(64) q = getPrime(960)
e = 65537
n = p * q
m = bytes_to_long(flag)
c = pow(m, e, n) print(n) print(e) print(c) """ 109545997692908640119778180616615467137263427346363802157101552308802035492583042305484510872534250590204633890244012206473254944461578586731214479823902016210524858119992792343323857591801815602755298907816653745787237243249250754438184465780079300046955351380874983219424509804046044155105420624134928950593 65537 60835437241864616192646285092530462791482725574153065942344577805774055748070517968700896734457803124921034248954830110681513200207051446917051984997517664598318213803834381020228321147094302180952863972870121774478463815061457961638522310049125447256023780435286831159331599643037004105968056930196956357111 """
题目明确告诉了是 Pollard rho 那就跑呗。
这边使用 yafu 和 sage 都可以很快地跑出来。
所以就可以很快地写出来脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
from Crypto.Util.number import long_to_bytes import gmpy2
p = 11639886772540103443 q = 9411259734187523103027675618443565372807125050899515342998490623549273883177328780379175308588514434780739787574605085438293481576063488642974019749445750913039827524375474045314235436032681283099464284573452668138513029067298857272645063686634812862494880622038134429507982478626463225051 n = 109545997692908640119778180616615467137263427346363802157101552308802035492583042305484510872534250590204633890244012206473254944461578586731214479823902016210524858119992792343323857591801815602755298907816653745787237243249250754438184465780079300046955351380874983219424509804046044155105420624134928950593 e = 65537 c = 60835437241864616192646285092530462791482725574153065942344577805774055748070517968700896734457803124921034248954830110681513200207051446917051984997517664598318213803834381020228321147094302180952863972870121774478463815061457961638522310049125447256023780435286831159331599643037004105968056930196956357111
phi = (p-1)*(q-1) d = gmpy2.invert(e, phi) m = pow(c, d, n)
flag = long_to_bytes(m) print(flag) # b'flag{baby_RSA_Fermat_decompose_by_far_pq}'