给出了n,c,e,dp,我们可以借助这些来求解pq

网上看了不少wp,对于有关dp的推导总感觉写的不是非常透彻,自己动手写一下,有助于理解。

一开始我以为dp的意思是d*p,那样n=p*q,求n/d*p就等于p*q/d*p=q/d,用fractions函数里的Fraction理论上就能把q和d求出来,但是做不出来,网上查了wp发现原来dp的意思是

dp=d%(p-1)

好家伙,根据这个式子可以往下推导(纯纯的数学运算了):

变换一下得到

在rsa中定义

所以 

变换得到

我们令X=[k2*(q-1)-k1]+1,所以该式即为    

根据 dp=d%(p-1)可知,dp是余数,所以dp<p-1,相应的e>X

所以我们爆破X在(1,e+1)之间,当X满足(dp*e-1)%X==0时,p=(dp*e-1)//X+1

因为符合条件的x有很多,求出来的p不一定符合条件,所以需要进一步验证n%p=0

上代码:

import gmpy2
from Crypto.Util.number import long_to_bytes
e = 65537
n = 13851998696110232034312408768370264747862778787235362033287301947690834384177869107768578977872169953363148442670412868565346964490724532894099772144625540138618913694240688555684873934424471837897053658485573395777349902581306875149677867098014969597240339327588421766510008083189109825385296069501377605893298996953970043168244444585264894721914216744153344106498382558756181912535774309211692338879110643793628550244212618635476290699881188640645260075209594318725693972840846967120418641315829098807385382509029722923894508557890331485536938749583463709142484622852210528766911899504093351926912519458381934550361
dp = 100611735902103791101540576986246738909129436434351921338402204616138072968334504710528544150282236463859239501881283845616704984276951309172293190252510177093383836388627040387414351112878231476909883325883401542820439430154583554163420769232994455628864269732485342860663552714235811175102557578574454173473
c = 6181444980714386809771037400474840421684417066099228619603249443862056564342775884427843519992558503521271217237572084931179577274213056759651748072521423406391343404390036640425926587772914253834826777952428924120724879097154106281898045222573790203042535146780386650453819006195025203611969467741808115336980555931965932953399428393416196507391201647015490298928857521725626891994892890499900822051002774649242597456942480104711177604984775375394980504583557491508969320498603227402590571065045541654263605281038512927133012338467311855856106905424708532806690350246294477230699496179884682385040569548652234893413for x in range(1,e+1):if (dp*e-1)%x==0:p=(dp*e-1)//x+1if n%p==0:q=n//pphi=(p-1)*(q-1)d=gmpy2.invert(e,phi)m=pow(c,d,n)print(long_to_bytes(m))

解的flag{dp_i5_1eak}

ctfshow crypto funnyrsa3 RSA之dp泄露相关推荐

  1. RSA的dp泄露 —— 【WUST-CTF2020】leak

    文章目录 题目 RSA的dp泄露 gmpy2安装 题目 附件给了一个名为flag的文件,不知道是什么类型文件 放进kali,file flag查看文件类型 发现是文本,于是cat 命令查看 RSA的d ...

  2. ctfshow crypto部分wp

    目录 密码学签到 crypto2 crypto3 crypto4 crypto5 crypto6 crypto7 crypto8 crypto9 ​crypto10 crypto11 crypto0 ...

  3. N等于三个质数求解题目--dp泄露研究--题目(m的高位攻击刷题)--大小循环统计出现次数题--Dvwa文件上传(2级)

    目录 N等于三个质数求解题目 dp泄露研究 题目(m的高位攻击刷题) 大小循环统计出现次数题 Dvwa文件上传(2级) N等于三个质数求解题目 分析题目发现有三个质数,三个质数之间并有什么关系.n等于 ...

  4. 关于Crypto.PublicKey.RSA,在generate后无法被赋值问题

    前言 最近做题的时候有遇到一个问题,就是去利用求解出来的rsa的私钥去生成pem格式的私钥文件.找到网上用的都是先令RSA去generate,然后分别给RSA的n,e,d,p,q参数赋值,再导出私钥. ...

  5. 2022年 HSC-1th中CRYPTO的RSA

    2022年 HSC-1th中CRYPTO的RSA 照例下载附件,是 py 文件: import gmpy2 import sympy from Crypto.Util.number import *f ...

  6. PwnTheBox(Crypto篇)---Rsa(爆破e)

    PwnTheBox(Crypto篇)-Rsa(爆破e) 文章目录 PwnTheBox(Crypto篇)---Rsa(爆破e) 题目描述 rsa基础 直接分解 n 爆破 e 怎么从A绕出? x,y p, ...

  7. 使用Crypto实现RSA算法的数字签名和检验

    总的来说,需要用到的对象有三个: Crypto.PublicKey.RSA:用来生成RSA算法的密钥对象 Crypto.Hash.SHA384:用来获取信息的摘要对象 Crypto.Signature ...

  8. 【Crypto】RSA

    目录 1.已知(p,q,e),求d 2.已知(p,q,e,c),求m 3.已知(p,q,dp,dq,c),求m 4.已知(e,dp,n,c),求m 5.已知(n,e1,e2,c1,c2),求m 6.已 ...

  9. python使用密钥加密的表述_python 利用Crypto进行RSA解密加密文件

    背景:工作需要,部分数据进行了加密传输,对方使用了RSA对密码进行了加密,需要获取到解密的数据. 目标:在已知公钥,私钥的情况下,使用python对其进行解密. RSA加密 一.遇到的问题 收到加密的 ...

最新文章

  1. 【硬件基础】有源蜂鸣器与无源蜂鸣器
  2. ArrayList与LinkedList区别
  3. DeepI2P:基于深度分类的图像对点云配准
  4. 阿里云双十一1折,1C2G 1年仅99 !!一起来拼团!
  5. python 中sys.stdout.write 和 print sys.stdout的区别(转)
  6. strncmp函数——比较特定长度的字符串
  7. 企业级java springcloud b2bc商城系统开源源码二次开发-hystrix 请求缓存
  8. ML之回归预测:利用两种机器学习算法(LiR,XGBoost(调优+重要性可视化+特征选择模型))对无人驾驶汽车系统参数(2017年的data,18+2)进行回归预测值VS真实值
  9. Java中定义实例变量时指定初始化值顺序
  10. 业务id转密文短链的一种实现思路
  11. linux 复制 链接文件,Linux硬链接、软连接和复制的区别
  12. 卸载anaconda
  13. nodejs pm2的简单应用
  14. 二分法和牛顿迭代实现开根号函数:OC的实现
  15. 工业设备数据采集系统-采集精灵
  16. vim字符串替换命令
  17. 计算机科学与技术导论课论文题目,优秀计算机专业导论论文题目 计算机专业导论论文题目哪个好...
  18. 全行业产业链图示(摘自企查查)
  19. 时间管理类APP分析:拇指时间
  20. UC手机浏览器(U3内核)相关文档整理

热门文章

  1. 一切钻空子的行为最后都会惨淡收场
  2. GIS——地图比例尺
  3. VS Code配置C/C++环境
  4. 【Matlab图像去噪】小波滤波(硬阙值+软阙值)+中值滤波图像去噪【含源码 462期】
  5. 三星S7 Edge怎么打开usb调试呢
  6. 怎么用python画世界地图_用Python画世界地图
  7. 去掉CAJViewer广告的方法
  8. 从一个class文件深入理解Java字节码结构
  9. Latex修改局部字体大小
  10. lol云顶之奕助手_LOL云顶之弈助手app下载-LOL云顶之弈助手官网版下载v1.1.2-FC游戏网...