BUUCTF_Crypto_RSA5

本文介绍了在BUUCTF挑战中Crypto类别的RSA5问题。通过分析给出的20组c和n,利用不同n可能共享相同质因数p或q的特性,使用欧几里得算法求解最大公约数,进而求得p、q,最终计算出原始消息m,成功解密并获得flag。
摘要由CSDN通过智能技术生成

题目:给了一个txt文本,其中有20组c和n

 思路:不同的n可能有相同的p或者是q(最大公约数)

通过欧几里得算法求不同n的最大公约数得到p,q,从而算出m

代码:

import gmpy2
import libnum
e = 65537
n1 = 20474918894051778533305262345601880928088284471121823754049725354072477155873778848055073843345820697886641086842612486541250183965966001591342031562953561793332341641334302847996108417466360688139866505179689516589305636902137210185624650854906780037204412206309949199080005576922775773722438863762117750429327585792093447423980002401200613302943834212820909269713876683465817369158585822294675056978970612202885426436071950214538262921077409076160417436699836138801162621314845608796870206834704116707763169847387223307828908570944984416973019427529790029089766264949078038669523465243837675263858062854739083634207
c1 = 974463908243330865728978769213595400782053398596897741316275722596415018912929508637393850919224969271766388710025195039896961956062895570062146947736340342927974992616678893372744261954172873490878805483241196345881721164078651156067119957816422768524442025688079462656755605982104174001635345874022133045402344010045961111720151990412034477755851802769069309069018738541854130183692204758761427121279982002993939745343695671900015296790637464880337375511536424796890996526681200633086841036320395847725935744757993013352804650575068136129295591306569213300156333650910795946800820067494143364885842896291126137320

n2 = 20918819960648891349438263046954902210959146407860980742165930253781318759285692492511475263234242002509419079545644051755251311392635763412553499744506421566074721268822337321637265942226790343839856182100575539845358877493718334237585821263388181126545189723429262149630651289446553402190531135520836104217160268349688525168375213462570213612845898989694324269410202496871688649978370284661017399056903931840656757330859626183773396574056413017367606446540199973155630466239453637232936904063706551160650295031273385619470740593510267285957905801566362502262757750629162937373721291789527659531499435235261620309759
c2 = 15819636201971185538694880505120469332582151856714070824521803121848292387556864177196229718923770810072104155432038682511434979353089791861087415144087855679134383396897817458726543883093567600325204596156649305930352575274039425470836355002691145864435755333821133969266951545158052745938252574301327696822347115053614052423028835532509220641378760800693351542633860702225772638930501021571415907348128269681224178300248272689705308911282208685459668200507057183420662959113956077584781737983254788703048275698921427029884282557468334399677849962342196140864403989162117738206246183665814938783122909930082802031855

n3 = 25033254625906757272369609119214202033162128625171246436639570615263949157363273213121556825878737923265290579551873824374870957467163989542063489416636713654642486717219231225074115269684119428086352535471683359486248203644461465935500517901513233739152882943010177276545128308412934555830087776128355125932914846459470221102007666912211992310538890654396487111705385730502843589727289829692152177134753098649781412247065660637826282055169991824099110916576856188876975621376606634258927784025787142263367152947108720757222446686415627479703666031871635656314282727051189190889008763055811680040315277078928068816491
c3 = 4185308529416874005831230781014092407198451385955677399668501833902623478395669279404883990725184332709152443372583701076198786635291739356770857286702107156730020004358955622511061410661058982622055199736820808203841446796305284394651714430918690389486920560834672316158146453183789412140939029029324756035358081754426645160033262924330248675216108270980157049705488620263485129480952814764002865280019185127662449318324279383277766416258142275143923532168798413011028271543085249029048997452212503111742302302065401051458066585395360468447460658672952851643547193822775218387853623453638025492389122204507555908862

n4 = 21206968097314131007183427944486801953583151151443627943113736996776787181111063957960698092696800555044199156765677935373149598221184792286812213294617749834607696302116136745662816658117055427803315230042700695125718401646810484873064775005221089174056824724922160855810527236751389605017579545235876864998419873065217294820244730785120525126565815560229001887622837549118168081685183371092395128598125004730268910276024806808565802081366898904032509920453785997056150497645234925528883879419642189109649009132381586673390027614766605038951015853086721168018787523459264932165046816881682774229243688581614306480751
c4 = 452103801104475844189112846846723308849388575085058898570851991115477809059713612615028904189345412667446814139347266233735036171221269486731162297044070772794111326383235717314177585522797374257108897459347630208411177062576422283836627755956088704294885989213855147268065451781491660927974836558061071225985667774051847708653159223310717547006829190360750579943293198966370747701790461142621377023839700574373038608003195569415846655847559975
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: buuctf crypto rsarsa 是一个密码学竞赛中的题目,涉及到 RSA 加密算法。RSA 是一种非对称加密算法,常用于数据加密和数字签名。在该题目中,可能需要对 RSA 加密算法的原理和实现进行深入的研究和分析,以解决加密和解密的问题。 ### 回答2: BUUCTF是一个针对计算机安全领域的技能竞赛,旨在提高选手的安全防护意识和技术能力。其中涉及的加密算法RSA在密码学中属于非对称加密算法,其加密过程中需要用到两个密钥,一个是公钥,一个是私钥。在加密过程中,公钥用于加密明文,而私钥则用于解密密文。因此,RSA算法的安全性取决于私钥的保护,若私钥泄漏,则加密数据不再安全。 在BUUCTFRSA题目中,选手需要利用给定的RSA公钥、密文等信息来解密出原始明文。首先,选手需要对给定的公钥进行分解,以求出两个大质数p和q,并计算出n=p*q。然后选手需要求出一个整数e,使得e与(p-1)*(q-1)互质。选手需要利用扩展欧几里得算法求出一个整数d,使得d*e mod (p-1)*(q-1)=1。最后,选手就可以利用求得的d,将密文解密为原始明文。 在针对RSA算法的攻击方法中,通过枚举计算或利用数学上的漏洞,攻击者可以猜测出素数p和q的值,推导出解密私钥,并进一步利用私钥进行加密和签名等操作,从而窃取数据和获得系统控制权。因此,选手需要具备RSA算法的基本理论知识和常用攻击方法,并掌握实际应用中的RSA加密、解密及签名等操作。只有建立起一个扎实的RSA算法基础,才能在BUUCTF竞赛中成功击败其他选手。 ### 回答3: buuctf crypto rsarsa是一个密码学竞赛中的一个题目,旨在测试参赛者对于RSA算法的理解和应用能力。 RSA算法是目前最为常用的公钥加密算法之一,它的安全性基于质因数分解问题。在加密时,通过选择两个足够大的质数p和q,将它们相乘得到一个大的合数n,然后选择一个整数e作为公开密钥,满足e和(p-1)(q-1)互质。接着,选取一个整数d作为私有密钥,使得e*d mod (p-1)(q-1) = 1。然后,任何人都可以通过公开密钥(e,n)将明文m进行加密,得到密文c = m^e mod n。而只有知道私有密钥(d,n)的人才能够将密文c进行解密,得到明文m = c^d mod n。 在这道buuctf crypto rsarsa题目中,我们需要破解一个RSA加密过的密文,得到原始明文。题目给出了一个密文c和公钥(e,n),但是并没有给出私钥d。首先,我们需要对n进行质因数分解,求出p和q。这里我们可以使用Pollard-Rho算法或是其他的质因数分解算法。一旦我们求出了p和q,我们就能够计算出(p-1)(q-1),并通过扩展欧几里得算法求出私钥d。然后,我们就可以使用私钥d来解密密文得到明文了。 需要注意的是,在实际应用中,RSA算法需要保证选择的质数p和q足够大,才能够抵御当前已知的攻击手段。同时,在实现中还需要注意一些常见的安全漏洞,例如使用相同的公开指数e等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值