_ , p1, q1 = gmpy2.gcdext(e1, e2) m = (pow(c1, p1, n) * pow(c2, q1, n)) % n ans = long_to_bytes(m) print(ans)
凯撒加密
题目:
1
YEI{CKRIUSK_ZU_2024_MKKQ_INGRRKTMK}
解答:
1 2 3 4 5 6 7 8 9
file = open("Caesar.txt","r") strings = file.read() ans = "" for i in strings: if i.isalpha() == False: ans += i continue ans += chr((ord(i)-ord("A")-6)%26+ord("A")) print(ans)
''' c = 127916287434936224964530288403657504450134210781148845328357237956681373722556447001247137686758965891751380034827824922625307521221598031789165449134994998397717982461775225812413476283147124013667777578827293691666320739053915493782515447112364470583788127477537555786778672970196314874316507098162498135060 n = 157667866005866043809675592336288962106125998780791920007920833145068421861029354497045918471672956655205541928071253023208751202980457919399456984628429198438149779785543371372206661553180051432786094530268099696823142821724314197245158942206348670703497441629288741715352106143317909146546420870645633338871 e = 65537 dp = 2509050304161548479367108202753097217949816106531036020623500808413533337006939302155166063392071003278307018323129989037561756887882853296553118973548769 '''
解答:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
from Crypto.Util.number import inverse,long_to_bytes c = 127916287434936224964530288403657504450134210781148845328357237956681373722556447001247137686758965891751380034827824922625307521221598031789165449134994998397717982461775225812413476283147124013667777578827293691666320739053915493782515447112364470583788127477537555786778672970196314874316507098162498135060 n = 157667866005866043809675592336288962106125998780791920007920833145068421861029354497045918471672956655205541928071253023208751202980457919399456984628429198438149779785543371372206661553180051432786094530268099696823142821724314197245158942206348670703497441629288741715352106143317909146546420870645633338871 e = 65537 dp = 2509050304161548479367108202753097217949816106531036020623500808413533337006939302155166063392071003278307018323129989037561756887882853296553118973548769
x = e*dp - 1 for i inrange(1,e): if x % i == 0: p_1 = x // i + 1 if n % p_1 == 0: p = p_1 q = n // p break phi = (p - 1) * (q - 1) d = inverse(e, phi) m = pow(c, d, n) ans = long_to_bytes(m) print(ans)
m = bytes_to_long(flag) p = getPrime(1024) assert m.bit_length() == 255
defencrypt(m): a = getPrime(1024) b = getPrime(400) c = (a * m + b) % p return c, a
result = [encrypt(m) for i inrange(5)] c = [x[0] for x in result] a = [x[1] for x in result]
print('p =', p) print('c =', c) print('a =', a)
''' p = 114770017142688382362918268558878024848633097928402093647914503696492833723966801545716194546592346338592062332306371502256979159033965343002132956304625610134374822329402499359634555710129039614275145668904822690744696925414716152630310915301980153974374009140517084226870950134327432658087834138202887501571 c = [25269157674120082500323585451842928560404625967932662908517922704871828513397233858615005968124017428639853960550468542894270451871612496631645175015826203493265945456529848647562285359912541672751550625137876486033809099678631009005979648033707322772087110235116987698692692467320479776960630479772236446980, 75827517416784647262997004080634347924631190865715212882627791181841845414253117114184423517850773219376565782814219713490136873921446382123059696483594598328510450811390866671002685611755205236016843942407419858592870716928648777362367108239158432436307113173823883182666320180058177554647020175991566479974, 4000439731719746534404360339840675006453847582492745979982221624660296805996044239209286181541462187650487112017410839740281883027081539802479046385802021188067656190594734619927933032154534742175380783895559841318520045144113562164247717915766667365412215754183668349398802684299015216478025166881475794536, 16711257143606850336586355581909703391105580636095435863487225535083010317005439435375105800641024112138121810242207127443011036209544967633123983636015153089843815287370646565071784002098183021489882046492609441708361550786752857773565252821037805549119284258373739189052221307754872723967188683410620808193, 106512227999048988543537542345636528925594107128125030635002665980574709006558840446189017357623681828677935125012144689963798865971782914704616798239451971370511961281779438306334353650663495164449411037055054859128957955413918744183200858441122917851347996800797164614883188302584586112732819164555910532500] a = [177876163920838720585474640511391249051418827853372387342635245341495792468826199544624082182728094652999191797576747605771062756630817438777653951772485569478516324903956113309190795622258346824643390004835397272889256696087356239515881459115499360779486974615331766141255410923960657795391638070660994726539, 154147211832384364492785997490497428696214843927503185938896425556028644075902949520267734189423717477702286854849502563505554965833703544305651488482204719931055591825164774932532116940955079750398001376723036214113076925445019856194390932639722726924707396244454184674407094860919513514591518499956074524561, 162236910312416448303316079284626131452444352290110477620135842885125003493068172330766174225997049094080836685617836911475638508283918576304502582848847097467251286819613975600023439985149604495163647781268904127545271241114039490048103188362740808427663167350820948490766499995036870926879430699822216419877, 156324330649465856865205652642919116551480610060830456323361514761783406613162826555066367215822747145109223530381689780625035795004458919262362420375225560790467893332585836287433463308447660726674632677063603419250881619682710122472587150879771212601074942044613408069114640355658551759306352327418458216623, 94727349364308455432706991721504607810501329870619614073375570944298709074650444442139356318854809081925625009516102978518170343525726627149123655332253529418292440747073463615106501530133930750010290051226765906194210372904323460884238665194406125116885468971886527174150462509520345910607640580833401931201] '''
解答:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
#sage from Crypto.Util.number import * p = 114770017142688382362918268558878024848633097928402093647914503696492833723966801545716194546592346338592062332306371502256979159033965343002132956304625610134374822329402499359634555710129039614275145668904822690744696925414716152630310915301980153974374009140517084226870950134327432658087834138202887501571 c = [25269157674120082500323585451842928560404625967932662908517922704871828513397233858615005968124017428639853960550468542894270451871612496631645175015826203493265945456529848647562285359912541672751550625137876486033809099678631009005979648033707322772087110235116987698692692467320479776960630479772236446980, 75827517416784647262997004080634347924631190865715212882627791181841845414253117114184423517850773219376565782814219713490136873921446382123059696483594598328510450811390866671002685611755205236016843942407419858592870716928648777362367108239158432436307113173823883182666320180058177554647020175991566479974, 4000439731719746534404360339840675006453847582492745979982221624660296805996044239209286181541462187650487112017410839740281883027081539802479046385802021188067656190594734619927933032154534742175380783895559841318520045144113562164247717915766667365412215754183668349398802684299015216478025166881475794536, 16711257143606850336586355581909703391105580636095435863487225535083010317005439435375105800641024112138121810242207127443011036209544967633123983636015153089843815287370646565071784002098183021489882046492609441708361550786752857773565252821037805549119284258373739189052221307754872723967188683410620808193, 106512227999048988543537542345636528925594107128125030635002665980574709006558840446189017357623681828677935125012144689963798865971782914704616798239451971370511961281779438306334353650663495164449411037055054859128957955413918744183200858441122917851347996800797164614883188302584586112732819164555910532500] a = [177876163920838720585474640511391249051418827853372387342635245341495792468826199544624082182728094652999191797576747605771062756630817438777653951772485569478516324903956113309190795622258346824643390004835397272889256696087356239515881459115499360779486974615331766141255410923960657795391638070660994726539, 154147211832384364492785997490497428696214843927503185938896425556028644075902949520267734189423717477702286854849502563505554965833703544305651488482204719931055591825164774932532116940955079750398001376723036214113076925445019856194390932639722726924707396244454184674407094860919513514591518499956074524561, 162236910312416448303316079284626131452444352290110477620135842885125003493068172330766174225997049094080836685617836911475638508283918576304502582848847097467251286819613975600023439985149604495163647781268904127545271241114039490048103188362740808427663167350820948490766499995036870926879430699822216419877, 156324330649465856865205652642919116551480610060830456323361514761783406613162826555066367215822747145109223530381689780625035795004458919262362420375225560790467893332585836287433463308447660726674632677063603419250881619682710122472587150879771212601074942044613408069114640355658551759306352327418458216623, 94727349364308455432706991721504607810501329870619614073375570944298709074650444442139356318854809081925625009516102978518170343525726627149123655332253529418292440747073463615106501530133930750010290051226765906194210372904323460884238665194406125116885468971886527174150462509520345910607640580833401931201]
M = matrix(ZZ,7,7) for i inrange(5): M[i,i] = p M[-2,i] = a[i] M[-1,i] = c[i] M[-2,-2] = 1 M[-1,-1] = 1 L = M.LLL()[0] if L: print(long_to_bytes(abs(L[-2])%p))
defhandle(self): try: go = 1 signal.alarm(3000) self.send(b'Welcome to the AES_ECB Cryptography System') self.send(b'You can send your plaintext and get ciphertext') self.send(b'[+] ciphertext = plaintext + FLAG') self.send(b'Start?(yes/no)') while go: c = self.recv() if c == b'yes': plain = self.recv() cipher = encrypt(KEY,plain+FLAG) self.send(b'Your cipher:'+ cipher.hex().encode()) else: go = 0 self.send(b'GoodBye!')
from Crypto.Util.number import getPrime from secret import flag
p = getPrime(256) a = getPrime(256) b = getPrime(256) E = EllipticCurve(GF(p),[a,b]) m = E.random_point() G = E.random_point() k = getPrime(256) K = k * G r = getPrime(256) c1 = m + r * K c2 = r * G
#sage from Crypto.Util.number import * p = 93202687891394085633786409619308940289806301885603002539703165565954917915237 a = 93822086754590882682502837744000915992590989006575416134628106376590825652793 b = 80546187587527518012258369984400999843218609481640396827119274116524742672463 k = 58946963503925758614502522844777257459612909354227999110879446485128547020161
from Crypto.Util.number import * from secret import flag m = bytes_to_long(flag) assert m.bit_length()<500 p = getPrime(512) q = getPrime(512) n = p*q e = 3 c = pow(m, e, n) bits = 150 m = (m >> bits) << bits h = (2024*m-2023) % n print('n =',n) print('c =',c) print('h =',h)
''' n = 98776098002891477120992675696155328927086322526307976337988006606436135336004472363084175941067711391936982491358233723506086793155908108571814951698009309071244571404116817767749308434991695075517682979438837852005396491907180020541510210086588426719828012276157990720969176680296088209573781988504138607511 c = 9379399412697943604731810117788765980709097637865795846842608472521416662350816995261599566999896411508374352899659705171307916591351157861393506101348972544843696221631571188094524310759046142743046919075577350821523746192424192386688583922197969461446371843309934880019670502610876840610213491163201385965 h = 111518648179416351438603824560360041496706848494616308866057817087295675324528913254309319829895222661760009533326673551072163865 '''
解答:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#sage from Crypto.Util.number import inverse, long_to_bytes
n = 98776098002891477120992675696155328927086322526307976337988006606436135336004472363084175941067711391936982491358233723506086793155908108571814951698009309071244571404116817767749308434991695075517682979438837852005396491907180020541510210086588426719828012276157990720969176680296088209573781988504138607511 c = 9379399412697943604731810117788765980709097637865795846842608472521416662350816995261599566999896411508374352899659705171307916591351157861393506101348972544843696221631571188094524310759046142743046919075577350821523746192424192386688583922197969461446371843309934880019670502610876840610213491163201385965 h = 111518648179416351438603824560360041496706848494616308866057817087295675324528913254309319829895222661760009533326673551072163865 e = 3 bits = 150
m = (h + 2023)*inverse(2024, n) % n print(f"m = {m}")
P.<x> = PolynomialRing(Zmod(n)) f = (m+x)^e - c roots = f.small_roots()[0] if roots: ans = long_to_bytes(int(m+roots)) print(ans)
from Crypto.Util.number import * e = 65537 p = getPrime(1024) q = getPrime(1024) n = p * q pxor = p ^ (bytes_to_long(flag)<<400) assertlen(flag)== 44 m = bytes_to_long(flag) c = pow(m, e, n)
#sage from Crypto.Util.number import * pxor = 124229245244085791439650934438639686782423445183921252684721764061493908790073948877623812930339081158169421854801552819088679937157357924845248082716160727839419054107753000815066526032809275137495740454967765165248115412626716101315676902716808647904092798908601183908297141420793614426863816161203796966951 c = 11017336122691034053241992293963114590816319844384287448629663672049205892828600396465505710922907685545939978376321927394655458727494361852952898280905220963163625482295222856129164172619564344634365520328815972232825639292605311741655988427166811406091329613627961070231457035303298793651546412496975662225857123805867756651901374507447803198638466304862480202099076813471571495380132563252630789218173007275890600746758285415274434393381125742526014986039652677605642226576741424053749512280825231217420239089105794080707322357602941046822659335487420672699022969372037662958497832065752272061853723653365171768556 n = 14091206320622523674847720139761543154822190879035380245424481267482550932229611965964424965958386255076593911062804299275581742665134207390532802109700225140999812698020838683697375891035625255222001884477214361835101442288725383073334392995186053867261497679234362794914108033574681292656522807928680812726462195077833184018122369579002715900477290345396065912536529290811962117814900448319776590712946259540382461632468634827959957286905806432005632864663985014872365672653476822833921870071851313424903481282350342304819149894610089804321405589433980650340610521659031234826823369114800150883988613877877881069579 e = 65537
dp = int(strings_trans(dp),16) dq = int(strings_trans(dq),16) n = 19909823107653171578063591352961144331355821517081529017694276790993397379180193511755806958091550033235815834847549265751244192211761569881061742997804509098095297146520946343734939782935970054031389390447526577982809412074573616889663964050032806967234869741452169276495048891650957729859124875343810181695665153129824527065062831773013713479602052423965588148263292672514853749647510938621421264137177666497737099263481269491867593812579958283619882699866915561357437484323854411934718569074869408000191465973545262527827064708529700071967884924505367105288433603597633451764659888020272057850625902629529400734213 e = 65537 c = 127916287434936224964530288403657504450134210781148845328357237956681373722556447001247137686758965891751380034827824922625307521221598031789165449134994998397717982461775225812413476283147124013667777578827293691666320739053915493782515447112364470583788127477537555786778672970196314874316507098162498135060
file = open("key.enc", "rb") c = bytes_to_long(file.read())
x = e*dp - 1 for i inrange(1,e): if x % i == 0: p_1 = x // i + 1 if n % p_1 == 0: p = p_1 q = n // p break phi = (p - 1) * (q - 1) d = inverse(e, phi) m = pow(c, d, n) ans = long_to_bytes(m) print(ans)
''' a = 169790849804323540946197204708402762862586197604183102589270741859708550301920348112941305999764092197996929298474590062625556806793613268527763774013772685954699561684244945434843656515307801882995934869499880288594142919381501796488815033294127591623260894764750214588993456840404443515671353802614450411717 b = 87985708831523238980948938165414984318379459926002798504435964538203443877988599888615810231215118828138306895572062833107988965151522391460216837691927960249874511818878134399363147008042562222910234739940697553852540265617603482995091203105040187460485673579382171260197291783748886765929376179151804062085 p = 131724494512065658801039766546788821718063963144467818735768040631367069153816254855229655449559099188694403260044990366292026916085340250077198735215774149087025577263769846650728593180101073940507285459917860726551385227481715873503612683249433020201729190862430476054822102865441136763977415824331858801617 '''
解答:
1 2 3 4 5 6 7 8
from Crypto.Util.number import inverse, long_to_bytes a = 169790849804323540946197204708402762862586197604183102589270741859708550301920348112941305999764092197996929298474590062625556806793613268527763774013772685954699561684244945434843656515307801882995934869499880288594142919381501796488815033294127591623260894764750214588993456840404443515671353802614450411717 b = 87985708831523238980948938165414984318379459926002798504435964538203443877988599888615810231215118828138306895572062833107988965151522391460216837691927960249874511818878134399363147008042562222910234739940697553852540265617603482995091203105040187460485673579382171260197291783748886765929376179151804062085 p = 131724494512065658801039766546788821718063963144467818735768040631367069153816254855229655449559099188694403260044990366292026916085340250077198735215774149087025577263769846650728593180101073940507285459917860726551385227481715873503612683249433020201729190862430476054822102865441136763977415824331858801617
m = matrix(ZZ ,[[1,0,a],[0,2^400,b],[0,0,p]]) L = m.LLL()[0] print(long_to_bytes(abs(int(L[0]))))
from hashlib import sha256 import socketserver import os import signal import string import random
flag = "SYC{...}"
classTask(socketserver.BaseRequestHandler):
ctry = 0
def_recvall(self): BUFF_SIZE = 2048 data = b'' whileTrue: part = self.request.recv(BUFF_SIZE) data += part iflen(part) < BUFF_SIZE: break return data.strip()
defhandle(self): signal.alarm(60) try: ifnotself.proof_of_work(): self.send(b'[!] Wrong!') self.send(b'[*] Maybe you need a little force, right?') return else: self.send(b'[*] HEY, MY NEW FRIENDDD, YOUUUUUU FIND THE RIGHT WAAAAAAY!') self.send(b'[*] Or even more complex?') self.send(b'[*] Maybe these details are not important. See below :D')
signal.alarm(400) self.send(b'[+] ') whileself.ctry < 35: data = self.recv().decode() f = self.oraicle(data) self.send(f) self.ctry += 1
if __name__ == "__main__": HOST,PORT = '0.0.0.0',12321 server = ForkedServer((HOST,PORT),Task) server.allow_reuse_address = True print(HOST, PORT) server.serve_forever()
解答:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
from hashlib import sha256 import sys
table = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" for i in table: for j in table: for k in table: for l in table: string = i + j + k + l + "wMysYhu7k3xtiRw8" str_sha256 = sha256(string.encode()).hexdigest() if str_sha256 == "8529c5821de162e1c9d1a10f40d43706cb6c157544e029c1bc0a2833d1603198": print(i+j+k+l) sys.exit() #SYC{MAYB3_Y0U_KN0W_A1AN-B3<K3R?}
ncoCRT
题目:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
from Crypto.Util.number import * import random
flag = b'SYC{...}' m = bytes_to_long(flag+b'\x01'*23)
p = [0]*5 c = [0]*5 for i inrange(5): p0 = random.randint(2**100,2**101) p[i] = p0 c = [m%p[i] for i inrange(5)] print(f"p = {p}") print(f"c = {c}")
""" p = [1921232050179818686537976490035, 2050175089402111328155892746480, 1960810970476421389691930930824, 1797713136323968089432024221276, 2326915607951286191807212748022] c = [1259284928311091851012441581576, 1501691203352712190922548476321, 1660842626322200346728249202857, 657314037433265072289232145909, 2056630082529583499248887436721] """
解答:
1 2 3 4 5 6
#sage from Crypto.Util.number import long_to_bytes ms = [1921232050179818686537976490035, 2050175089402111328155892746480, 1960810970476421389691930930824, 1797713136323968089432024221276, 2326915607951286191807212748022] cs = [1259284928311091851012441581576, 1501691203352712190922548476321, 1660842626322200346728249202857, 657314037433265072289232145909, 2056630082529583499248887436721] x = crt(cs, ms) print(long_to_bytes(x))
import gmpy2 from Crypto.Util.number import isPrime,inverse,long_to_bytes h0 = 3220497006402049508998763812708472832647814868290156746347730942871191356255789659370553564805270033069126673720344310199953651087754072020225702916105541813428786992668144172000495857408180695235017329451164552864440669887978780387408892281885728829108705426036377534262123812335152528611168777211280571694805002313718755871797426493929314877273385162106226582910473718696585558235361302211164190022765345477880209355073870857330694309139033191510002831755011163554405501084092882774630793037506647051531578470767441695642108269033577519614546722167605348209455599860877630930453549375215766657975702946679735793440 n1 = 20609629372145649869124883931477035418773265506807982287973634398860995335157854064383658546598627777214414513344620919765235474447787454254677033199140440513722365295528339478763686234572386246701669139829187532179573583918405628738545887852577214800663095592976049188005405242091639210252676232732956312108538849591909382864675439965387851084691144379692503823575367370407191667133473482821484955537306602611587604747693171586870973700406072872451067709522642066831289686968535823774273770385924779368338446367102184983154486987531633971065357864924738084803301054789863293592286600424063888458243900130876991944561 h1 = 49194502383195208917988199785355579000471120627698824524136563939112767971337049691779758664899497703009458337602635607307068610164325874221815125058246159504553260658300727486252329656228567456351563661171511248498573151135374757953887871426130912974127123668357951196795364055703535399924661649957282476915345782505912688106575686848420343362888 h2 = 56029812337811022982598747354987989915364610368395101948222609237230875599013444593473706280586983516630982411154519894488542135837471701015074142753084529513202513061481615522865380857058628008542724882609524855349464549317203533208567803034618377155637303135785566874122555481931560957334493233423618193735362609235034574175221191665401074291634 n2 = 21127172569887870569621986802814771398069606826661397979515556618791602174698226712111670185315617811180192688381471253591193212149192104216153890060029438171543010427356810059660168369171504065120474047401466632600230981702536898738744701541132759858595341068713321976579864810553447534204513491008705215041861247277449063318972113826820821732327255577559447446606667162763843696891825420560307688553022453470653875157114663943723258181186659915926780802902213978395961981750159147594076399769386787561910947372748908551775527715538708855235861297549189165238857651886658156332640360898769204102407630920314871304057 c = 5607552428806279725164332098717496105359323731793797865776852054987286366396268835656116948807084338497364746716217052175055013330847114498067023163878490040957130515880922531725226729467904687450269817551037876044274898360914422201634758724176912018795267171627398316542607462818553194467631468793807762529509728325759331142060865432879561622747895422022839077034959965640817419843376693946391886148327389538923557583964708218796910422008150480950732394548385083016293891237783400286493750498647816940000092965104858068292374074379723230507283787259827582725133425982004517180631242028412315096023451549819804660838 e = 65537 q = gmpy2.gcd(h0-pow(2024,n1,n1),n1) print(q) for a inrange(2**12,2**13-1): ifnot isPrime(a): continue for b inrange(2**12,2**13-1): ifnot isPrime(b): continue p=gmpy2.gcd(b*h1-a*h2,n2) if p!= 1: print(p) n = p*q phi = (p-1) * (q-1) d = inverse(e,phi) m = pow(c,d,n) ans = long_to_bytes(m) print(ans) exit()
RnoCRT
题目:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
import hashlib from Crypto.Util.number import * from secret import x
m = [getRandomNBitInteger(256) for i inrange(10)] u = hashlib.sha256(x).hexdigest() assert u[:5]==b'6a651' flag = b'SYC{'+u+b'}' c = [x % i for i in m] print(m) print(c)
#sage from Crypto.Util.number import * import hashlib
m=[207867980504656835313307696396607264603, 245036212212570610987366430554968489325, 270836744824069537438646110613439698666, 319275775495422875474878625752594133023, 254268823435329877199449670714528712873, 213093607196415232366564484229844568444, 246921085368773491003187313772615702950] c=[150031581047390726903711035932621949276, 21260202376534810598778595491323328519, 144049733622518360270048059408969512643, 236920143187836025924037873968303507493, 99781504248790469459151935530031893836, 69236016568483424294966410179787943383, 20613188366058016717435734248097940419] x = crt(c,m) #print(x) l=1 for i inrange(7): l=lcm(l,m[i])
for i inrange(10000): u = x + i*l u = hashlib.sha256(str(u).encode()).hexdigest() if u[:5] == '6a651': flag = b'SYC{' + u.encode() + b'}' print(flag) break
RSA
题目:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
from Crypto.Util.number import bytes_to_long, getPrime from secret import flag p = getPrime(128) q = getPrime(128) n = p*q e = 65537 m = bytes_to_long(flag) c = pow(m, e, n) print(f"n = {n}") print(f"p = {p}") print(f"q = {q}") print(f"c = {c}")
''' n = 33108009203593648507706487693709965711774665216872550007309537128959455938833 p = 192173332221883349384646293941837353967 q = 172282016556631997385463935089230918399 c = 5366332878961364744687912786162467698377615956518615197391990327680664213847 '''
解答:
1 2 3 4 5 6 7 8 9 10 11
from Crypto.Util.number import long_to_bytes, inverse n = 33108009203593648507706487693709965711774665216872550007309537128959455938833 p = 192173332221883349384646293941837353967 q = 172282016556631997385463935089230918399 c = 5366332878961364744687912786162467698377615956518615197391990327680664213847 e = 65537 phi = (p-1)*(q-1) d = inverse(e, phi) m = pow(c, d, n) ans = long_to_bytes(m) print(ans)
XOR
题目:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
from Crypto.Util.number import * from pwn import xor
from pwn import xor from Crypto.Util.number import long_to_bytes f1 = 4585958212176920650644941909171976689111990 f2 = 3062959364761961602614252587049328627114908
e2=10706859949950921239354880312196039515724907 e1 = e2^f2 enc = e1^f1 #已知部分明文 hint = b'SYC{' key = xor(hint,long_to_bytes(enc)[:4]) flag = xor(long_to_bytes(enc),key) print(flag)