先看一道类似题目的题解,这是2020羊城杯的simple:

引用自:https://blog.csdn.net/jcbx_/article/details/109306542

from Crypto.Util.number import *
from gmpy2 import invert
c = 6472367338832635906896423990323542537663849304314171581554107495210830026660211696089062916158894195561723047864604633460433867838687338370676287160274165915800235253640690510046066541445140501917731026596427080558567366267665887665459901724487706983166070740324307268574128474775026837827907818762764766069631267853742422247229582756256253175941899099898884656334598790711379305490419932664114615010382094572854799421891622789614614720442708271653376485660139560819668239118588069312179293488684403404385715780406937817124588773689921642802703005341324008483201528345805611493251791950304129082313093168732415486813
e2 = 27188825731727584656624712988703151030126350536157477591935558508817722580343689565924329442151239649607993377452763119541243174650065563589438911911135278704499670302489754540301886312489410648471922645773506837251600244109619850141762795901696503387880058658061490595034281884089265487336373011424883404499124002441860870291233875045675212355287622948427109362925199018383535259913549859747158348931847041907910313465531703810313472674435425886505383646969400166213185676876969805238803587967334447878968225219769481841748776108219650785975942208190380614555719233460250841332020054797811415069533137170950762289
e1 = 114552459553730357961013268333698879659007919035942930313432809776799669181481660306531243618160127922304264986001501784564575128319884991774542682853466808329973362019677284072646678280051091964555611220961719302320547405880386113519147076299481594997799884384012548506240748042365643212774215730304047871679706035596550898944580314923260982768858133395187777029914150064371998328788068888440803565964567662563652062845388379897799506439389461619422933318625765603423604615137217375612091221578339493263160670355032898186792479034771118678394464854413824347305505135625135428816394053078365603937337271798774138959
N = 14922959775784066499316528935316325825140011208871830627653191549546959775167708525042423039865322548420928571524120743831693550123563493981797950912895893476200447083386549353336086899064921878582074346791320104106139965010480614879592357793053342577850761108944086318475849882440272688246818022209356852924215237481460229377544297224983887026669222885987323082324044645883070916243439521809702674295469253723616677245762242494478587807402688474176102093482019417118703747411862420536240611089529331148684440513934609412884941091651594861530606086982174862461739604705354416587503836130151492937714365614194583664241
a = 0.356#731./2049
M1=N**0.5
M2= N *(a+1)
D = diagonal_matrix(ZZ,[N,M1,M2,1])
M=matrix(ZZ,[[1,-N,0,N2],[0,e1,-e1,-e1N],[0,0,e2,-e2N],[0,0,0,e1e2]])D
L=M.LLL()
t=vector(ZZ,L[0])
x=tM(-1)
phi = int(x[1]/x[0]*e1)
d = invert(0x10001,phi)
m=pow(c,d,N)
print long_to_bytes(m) 

这个问题采用的是extending wiener attack,可以参考这篇博客https://blog.csdn.net/jcbx_/article/details/109306542,但是本题e有三个,与上面例题有差异,所以要构造新的LLL矩阵,涉及格相关的内容。

研究了一下LLL算法的论文,矩阵终于磨出来了:

根据论文中三个e的情况更改M矩阵及D矩阵

另外还需要更改a的值,a的值等于e的位数加一(即811),除以p*q的位数加一(即2049),保留三位小数。

也就是说算法可以改成这样:

from gmpy2 import invert
c = 8836441252076834545813477411326425375032267123570785772864736522363289546687708899074336247215937510570504358003107825056501941030269383864118843746175337393654312850577439133664730484837119573532202639084658757820201188879766516909534973535998857651937119461057973385426395724145776918292561702292436605761423965907449269350234768599086801097764871812636671292354213601605096195311151373515090830120096932678276497558133279308072396732663178152322425868305886057431421961733257631788613513220162555655889179523511665784230205568552674460999865994501813783725694862606623394523003050895631252334230583883118073253764
e2 = 1369139766594499502102339802022151306473260303306443944809840701670612636871224554225002168944819225437998598365160666841985968029088084698853903787370193867870645734160453072726844381549153136514381609762281206178008136789238144315497475817194151194572296755949819068715206908967557531534965163142405984337962331584669073736885280026972797963267782773986730500382181318371495017118704093918920704345311527651399811381295059334575066198160251659075954912595362620180554775651196811925899974337478484410958141839806933182849189323190130942495340593301630517690327831594714373018323154749642065080783334651101242699263
e1 = 6394785330485131407826851764944106702989306751661773111300134919431104584180613989558300377714349529400378558913602158291081082675430487235339914971012067566601890029839947493155254582899628788537164340404428811085870041808860483801729245083548201334366733631432145384161908034867977906516995215397817811827060338562939218932916441868066261899714398094644048582309184012571138467837154157300425982546397721016585389530109123133328761496692431696333697620772147165360784490956672563278919171793966890158893934190837756790824904679773847777676326932643265426451922272758626857050445979305022351126666958426400079653623
e3 = 5437175210613834481955163777766627983523303337501300230689357572042873091664083970990501546609837607847693632622863075171175573210124960851439677015543351005393752316875323874628271392021624688370950188978195558312943877934365491687668809500866579503310026982199641168879029765994054311638922866950503743682009008734748720854732986500921718042561188808728053600445110972992438469967649056256589175739478272363214764480549487083235779588504538469805052660174224984711215950503095920589943783308241737365123329897745808282472351927870398484175556134059702516479014529101233832019814273876515569307294857432779445820767
N = 13441675621853397537941552930565086940390470130815380172405483101963424807980457970171725987335576421109600777181124732686757429091494072838586546464238360449989289020069386272380414809945684476174566989775147057082001644921451704981593847572798324632557836313044339427816944052099264108168157879645492166128090320214880302941951710697142064976112121583858774576042442313128499340606412845822519283515566759147621860641682899507428800319575392348478145779271935852461866317025429591494415486087527357696348049367246280018948490128455131326723173717164420547870649041609012209503120621766999344338619628361309881504449
a = 0.396#811/2049
M1=N**0.5
M2= N**(a+1.5)
M3=N**(1+a)
D = diagonal_matrix(ZZ,[N**1.5,N,M2,M1,M2,M3,M3,1])
M=matrix(ZZ,[[1,-N,0,N**2,0,0,0,-N**3],[0,e1,-e1,-e1*N,-e1,0,e1*N,e1*N**2],[0,0,e2,-e2*N,0,e2*N,0,e2*N**2],[0,0,0,e1*e2,0,-e1*e2,-e1*e2,-e1*e2*N],[0,0,0,0,e3,-e3*N,-e3*N,e3*N**2],[0,0,0,0,0,e1*e3,0,-e1*e3*N],[0,0,0,0,0,0,e2*e3,-e2*e3*N],[0,0,0,0,0,0,0,e1*e2*e3]])D
L=M.LLL()
t=vector(ZZ,L[0])
x=t*M(-1)
phi = int(x[1]/x[0]*e1)
d = invert(0x10001,phi)
m=pow(c,d,N)
print (m)

在sage上运行该脚本就可以得到m的数字形式了,再通过long_to_byte()函数即可得到flag。

XCTF夏令营选拔赛TooooomanyRSA题解相关推荐

  1. 暨阳学院2022年绍兴市赛校内选拔赛(题解)

    暨阳学院2022年绍兴市赛校内选拔赛(题解) A. 思路: 简单dp,枚举每个补给站选和不选两种情况. 代码: #include<bits/stdc++.h> using namespac ...

  2. CSUST 四月选拔赛个人题解

    CSUST 四月选拔赛个人题解 这场比赛演的逼真,感谢队友不杀之恩 总结:卡题了赶紧换,手上捏着的题尽快上机解决 http://csustacm.com:4803/ 1113~1122 1113:六学 ...

  3. 华东师范大学数据学院2020夏令营机试题解

    华东师范大学数据科学与工程学院第八届"云计算与大数据"夏令营机试时间是8:30-11:30,共6道题,在陆老师负责的学院自己的OJ平台上进行.OJ平台使用体验良好. A.排序 给一 ...

  4. 2020中南大学研究生招生夏令营机试题题解

    2020中南大学研究生招生夏令营机试题 第一题:缺失的彩虹 题意 颜色共有七种,给定 n(n≤100)n(n≤100)n(n≤100) 个颜色,问七种颜色中哪些没有出现. 思路 开一个大小为 777 ...

  5. 11.13蓝桥杯选拔赛热身赛题解——HH的LCM

    基础算法...求两个整数的最小公倍数.先求一下最大公约数,然后就能求最小公倍数啦. import java.util.*; public class HH的LCM {public static int ...

  6. 天梯赛选拔赛(一)题解

    最后一位 时间限制: 1 Sec  内存限制: 128 MB 提交: 226  解决: 30 [提交] [状态] [讨论版] [命题人:*Administrator] 题目描述 2018年内蒙古自治区 ...

  7. HNUCM2020年春季ACM集训队选拔赛(2)题解

    问题 A: 爱的日期 题目描述 Inter和AMD刚刚在上个学期确定了恋爱关系,但是由于要期末考试,他们没法have a appointment. 所以他们打算在2月14日情人节那天一起出去.恰恰最近 ...

  8. 2020年中国大学生程序设计竞赛(CCPC) - 网络选拔赛部分题解

    前言 既培养算法知识,又能学习按摩手法,我们还有专业的算命大师帮你窥察天机. 这还犹豫什么,快来加入我们.前10名还能请大师免费帮你看风水,让你死后也能安心. 我怕不是进了一个人才市场- Expres ...

  9. 2018年清华大学软件学院夏令营机试题解

    原题博客: https://blog.csdn.net/wangkingkingking/article/details/80666385 第二题我觉得他的做法会TLE. 5e9肯定只能n啊 但是我这 ...

最新文章

  1. 广东生态所孙蔚旻团队EST发表尾矿微生态调查两部曲
  2. MoeCTF 2021Re部分------baby_bc
  3. Python实训day13am【Python网络爬虫综合大作业PPT】
  4. linux 防火墙 iptables 允许 某个 某段 IP访问 某个端口
  5. C语言开发笔记(七)const和指针
  6. Win10系统java环境配置
  7. java 课后习题 输出正整数的顺序相反数
  8. linux命令fs ls,Linux 命令:fsdisk
  9. 计算机vfp系统,计算机等级考试VFP教程:第一章数据库系统
  10. Delphi官方网站资源
  11. vue公式编辑器 加强版(简化版)
  12. WPF 设置窗口不跟随触摸惯性拖动抖动
  13. 飓风桑迪:曼哈顿数据中心的灾难应急方案
  14. java 给一个开学日期,计算当天是开学第几周星期几或者开学第几周星期几为哪一天
  15. 计算机神奇的画图教学反思,《画图》信息技术教学反思
  16. Android开发技术周报 Issue#27
  17. 毕业设计 stm32酒驾检测系统 - 单片机 嵌入式 物联网
  18. BCGControlBar Pro for MFC v13.3现已发布:着重改进图表、属性/编辑控件等,打造全面、易上手的MFC库
  19. unity3D---3Dmaxs给带骨骼蒙皮的模型绑定bip
  20. 4月13日—4月17日三年级课程

热门文章

  1. 西门子PLC常用通信协议以及常用协议的区别(一)
  2. 【国网南网】电费API接口文档源码
  3. 程序员哭诉:面试被头条HR人身攻击,说我长相让他失望,被打击
  4. 无人之疆 - 坝上草原,锡林郭勒,克什克腾
  5. sersync+rsync原理及部署
  6. 信安实验一:自建CA搭建https
  7. 【紫光同创PGL22G学习】七、千兆以太网(ETH)上手
  8. 算法:欧几里得辗转相除法的原理
  9. 笔记:辗转相除法原理
  10. 从“颠覆医疗”到“拥抱医疗”,智慧医疗大数据到底应该怎么做