本文主要是介绍2024蓝桥杯CTF writeUP--Theorem,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
密码方向的签到题,根据题目已知n、e和c,并且p和q是相邻的素数,可以考虑分解。
通过prevprime函数分解n,然后
RSA解密即可:
from Crypto.Util.number import long_to_bytes
import gmpy2
import libnumfrom sympy import prevprimee = 65537
n = 94581028682900113123648734937784634645486813867065294159875516514520556881461611966096883566806571691879115766917833117123695776131443081658364855087575006641022211136751071900710589699171982563753011439999297865781908255529833932820965169382130385236359802696280004495552191520878864368741633686036192501791
c = 36423517465893675519815622861961872192784685202298519340922692662559402449554596309518386263035128551037586034375613936036935256444185038640625700728791201299960866688949056632874866621825012134973285965672502404517179243752689740766636653543223559495428281042737266438408338914031484466542505299050233075829# 分解n
p = prevprime(gmpy2.iroot(n,2)[0])
q = n // p# 求d
d = gmpy2.invert(e,(p-1) * (q-1))print(long_to_bytes(pow(c,d,n)))
非预期解,n可以直接用yafu
进行分解
E:\CTF实例\Reverse\RSA\yafu-1.34>yafu-x64.exe "factor(94581028682900113123648734937784634645486813867065294159875516514520556881461611966096883566806571691879115766917833117123695776131443081658364855087575006641022211136751071900710589699171982563753011439999297865781908255529833932820965169382130385236359802696280004495552191520878864368741633686036192501791)"fac: factoring 94581028682900113123648734937784634645486813867065294159875516514520556881461611966096883566806571691879115766917833117123695776131443081658364855087575006641022211136751071900710589699171982563753011439999297865781908255529833932820965169382130385236359802696280004495552191520878864368741633686036192501791
fac: using pretesting plan: normal
fac: no tune info: using qs/gnfs crossover of 95 digits
div: primes less than 10000
fmt: 1000000 iterations
Total factoring time = 0.5512 seconds***factors found***P154 = 9725277820345294029015692786209306694836079927617586357442724339468673996231042839233529246844794558371350733017150605931603344334330882328076640690156923
P154 = 9725277820345294029015692786209306694836079927617586357442724339468673996231042839233529246844794558371350733017150605931603344334330882328076640690156717ans = 1
这篇关于2024蓝桥杯CTF writeUP--Theorem的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!