当前位置: 首页 > article >正文

Theorem

Theorem

打开题: 

from Crypto.Util.number import *
 from gmpy2 import *
 flag = b'xxx'
 m =  bytes_to_long(flag)            #flag=long_to_bytes(m)
 p = getPrime(512)                    #随机生成一个512位的素数p
 q = next_prime(p)                   #p之后的下一个素数是q
 e = 65537
 n = p * q
 phi = (p - 1) * (q - 1)
 d = inverse(e, phi)                 #使d×e≡1(mod(phi))
 d1 = d % q
 d2 = d % p
 c = pow(m, e, n)                    #c=m的e次方mod n
                                     #通过下面已知n,c,d1,d2
 print(n)
 print(d1)
 print(d2)
 print(c)
 ​
 # 94581028682900113123648734937784634645486813867065294159875516514520556881461611966096883566806571691879115766917833117123695776131443081658364855087575006641022211136751071900710589699171982563753011439999297865781908255529833932820965169382130385236359802696280004495552191520878864368741633686036192501791
 # 4218387668018915625720266396593862419917073471510522718205354605765842130260156168132376152403329034145938741283222306099114824746204800218811277063324566
 # 9600627113582853774131075212313403348273644858279673841760714353580493485117716382652419880115319186763984899736188607228846934836782353387850747253170850
 # 36423517465893675519815622861961872192784685202298519340922692662559402449554596309518386263035128551037586034375613936036935256444185038640625700728791201299960866688949056632874866621825012134973285965672502404517179243752689740766636653543223559495428281042737266438408338914031484466542505299050233075829

通过观察RSA加密。

所以解密脚本:

 from Crypto.Util.number import long_to_bytes
 import gmpy2
 import libnum
 ​
 from sympy import prevprime
 ​
 e = 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))
 ​
 #m=pow(c,d,n)
 print(long_to_bytes(pow(c,d,n)))            
 ------------------------------------------------------
 flag{5f00e1b9-2933-42ad-b4e1-069f6aa98e9a}

关于RSA加密我特别推荐zhang三的[RSA算法原理及CTF解题](https://blog.csdn.net/qq_45521281/article/details/114706622)


http://www.kler.cn/a/529163.html

相关文章:

  • 5.4.2 结构化设计方法+结构化程序设计方法
  • GenAI 在金融服务领域的应用:2025 年的重点是什么
  • 2025 年,链上固定收益领域迈向新时代
  • 被裁与人生的意义--春节随想
  • 动态规划DP 背包问题 完全背包问题(题目分析+C++完整代码)
  • 新能源算力战争:为什么AI大模型需要绿色数据中心?
  • LeetCode LCR180文件组合
  • 进阶数据结构——双向循环链表
  • 8.攻防世界Web_php_wrong_nginx_config
  • pandas中的str使用方法
  • 【回溯+剪枝】电话号码的字母组合 括号生成
  • 五.简单函数
  • 【学习笔记】深度学习网络-正则化方法
  • 【NLP251】Transformer中的Attention机制
  • 【Proteus】NE555纯硬件实现LED呼吸灯效果,附源文件,效果展示
  • 设计心得——平衡和冗余
  • C语言:输入正整数链表并选择删除任意结点
  • ComfyUI安装调用DeepSeek——DeepSeek多模态之图形模型安装问题解决(ComfyUI-Janus-Pro)
  • 一文学会HTML编程之视频+图文详解详析
  • Selenium 使用指南:从入门到精通
  • 17.2 图形绘制8
  • ASP.NET Core与配置系统的集成
  • redex快速体验
  • 力扣动态规划-16【算法学习day.110】
  • 《苍穹外卖》项目学习记录-Day5在Java中操作Redis_Spring Data Redis
  • torch numpy seed使用方法