适用场景:

n很大,4000多位,e很小,e=3

一般来说,e选取65537.但是在RSA加密的时候有可能会选用e=3(不要问为什么,因为选取e
=3省时省力,并且他可能觉得n在4000多位是很安全的,).

RSA加密是m的e次方模n等于c。

①m^3<n,也就是说m^3=c。
②m^3>n,即(m^3+in)mod n=c(爆破i,不知道i取什么值)  

我们可以直接开三次方,其实上边这两个情况可以用一个脚本完成。

import gmpy
N=721059527572145959497866070657244746540818298735241721382435892767279354577831824618770455583435147844630635953460258329387406192598509097375098935299515255208445013180388186216473913754107215551156731413550416051385656895153798495423962750773689964815342291306243827028882267935999927349370340823239030087548468521168519725061290069094595524921012137038227208900579645041589141405674545883465785472925889948455146449614776287566375730215127615312001651111977914327170496695481547965108836595145998046638495232893568434202438172004892803105333017726958632541897741726563336871452837359564555756166187509015523771005760534037559648199915268764998183410394036820824721644946933656264441126738697663216138624571035323231711566263476403936148535644088575960271071967700560360448191493328793704136810376879662623765917690163480410089565377528947433177653458111431603202302962218312038109342064899388130688144810901340648989107010954279327738671710906115976561154622625847780945535284376248111949506936128229494332806622251145622565895781480383025403043645862516504771643210000415216199272423542871886181906457361118669629044165861299560814450960273479900717138570739601887771447529543568822851100841225147694940195217298482866496536787241
c=0x85C0DE5F89E88720AFD485F91DED38E9EAEDA3A61DDEE7087BBD29920EE40B6D53565EDD1E418095586BD4F33015729D433AF413C660E4C0B164ED025F91216D904578F7F20C5FB1E09E71992198D8E8D7FBD917597AEE45EBF4CA80124CE9B47ED163F0B9D5716A9D6E1F5B8AE09B16CAE30BBD64A15E17CC39A90FB62536AD943CDDA9A4AAC5978E3C93502535D5353638BC708C9B59CC9DC7BCB1D873336CE081591522B1D48904463783DD6837B1C41B8011889648E0ACDFBD3EE259F717990828D16DB34EB982446216DB534DC06B9E7AAF90BCCB54A1CC77C2813BDFE9A1B5C2E958C3EA8CA103BA1A89036B7014BBC962EB7A8C910E095BB83791BD9FEEE0D8F6AF0C2E030CCCC6D8729743419BDEE0A1E45AB5E7324A344761C8CC8DB30961A971D566E49C4562924C3EE001EDECE3445CD28DBA264BA8A90C5E533542096C26AA7D874997A308025A5E95BFC6949EBD16CEA889D242AB2E2FF2446090D07666D7574946E391D3F153D50346BC75DA94634182DF80F7BA97B77AF8922F13E43B2DF788902A209B9E569DD3C6FAA4DD7B43899F59798845DF642EDEEF34A186949CBE83C099F085F87A299591E715CCB4FE74612B00AEBE25C114819CF887C256121915416ACBCB058937E3D39EB7EF7143E145131119DA9C3D9818599A0E5109727FB581BBC20EB3E6A25011B8E9034537C0E580A0EE8F1553805BE8
i=0
while 1:
  if(gmpy.root(c+i*N, 3)[1]==1):
      print gmpy.root(c+i*N, 3)
      break
  i=i+1  

i从0开始就是第一种情况,直接开三次方,看看是否符合。
i从1开始,每次都加1就是第二种情况,爆破i

我们会直接得出明文,然后10进制转为text就行了,这里脚本用的是

import libnum
n=440721643740967258786371951429849843897639673893942371730874939742481383302887786063966117819631425015196093856646526738786745933078032806737504580146717737115929461581126895844008044713461807791172016433647699394456368658396746134702627548155069403689581548233891848149612485605022294307233116137509171389596747894529765156771462793389236431942344003532140158865426896855377113878133478689191912682550117563858186
print libnum.n2s(n)

这里我开始用的是converter转换十进制,没有成功,不知道为啥。

会跑比较长的时间,而且电脑还会嗡嗡响。

gmpy和libnum我在windows安装都失败了,在kali上安装一下子就好了。

例题:

https://dn.jarvisoj.com/challengefiles/extremelyhardRSA.rar.8782e822c895a2af3d8ba4ffbb3e280b

①下载后改下文件后缀名字.rar,解压后打开看到flag.enc和pubkey.pem。一个密文和一个公钥。
②openssl查看公钥的信息(n和e)

n=B0BEE5E3E9E5A7E8D00B493355C618FC8C7D7D03B82E409951C182F398DEE3104580E7BA70D383AE5311475656E8A964D380CB157F48C951ADFA65DB0B122CA40E42FA709189B719A4F0D746E2F6069BAF11CEBD650F14B93C977352FD13B1EEA6D6E1DA775502ABFF89D3A8B3615FD0DB49B88A976BC20568489284E181F6F11E270891C8EF80017BAD238E363039A458470F1749101BC29949D3A4F4038D463938851579C7525A69984F15B5667F34209B70EB261136947FA123E549DFFF00601883AFD936FE411E006E4E93D1A00B0FEA541BBFC8C5186CB6220503A94B2413110D640C77EA54BA3220FC8F4CC6CE77151E29B3E06578C478BD1BEBE04589EF9A197F6F806DB8B3ECD826CAD24F5324CCDEC6E8FEAD2C2150068602C8DCDC59402CCAC9424B790048CCDD9327068095EFA010B7F196C74BA8C37B128F9E1411751633F78B7B9E56F71F77A1B4DAAD3FC54B5E7EF935D9A72FB176759765522B4BBC02E314D5C06B64D5054B7B096C601236E6CCF45B5E611C805D335DBAB0C35D226CC208D8CE4736BA39A0354426FAE006C7FE52D5267DCFB9C3884F51FDDFDF4A9794BCFE0E1557113749E6C8EF421DBA263AFF68739CE00ED80FD0022EF92D3488F76DEB62BDEF7BEA6026F22A1D25AA2A92D124414A8021FE0C174B9803E6BB5FAD75E186A946A17280770F1243F4387446CCCEB2222A965CC30B3929

n为4096位,我哭了,你呢?

③不过e=3,低加密指数攻击。

上去就是脚本。直接对(c^3+kn)开三次方,跑了好一会。

c就是那个flag.enc的十六进制,直接扔到winhex里面,复制出来他的十六进制,把换行去一下,写个str.replace(' ','')把空格去一下就好了。

明文就是

440721643740967258786371951429849843897639673893942371730874939742481383302887786063966117819631425015196093856646526738786745933078032806737504580146717737115929461581126895844008044713461807791172016433647699394456368658396746134702627548155069403689581548233891848149612485605022294307233116137509171389596747894529765156771462793389236431942344003532140158865426896855377113878133478689191912682550117563858186

注意明文没有L哦,那是python的问题。

然后把这十进制转化为text就ok了。

转载于:https://www.cnblogs.com/zaqzzz/p/9864576.html

RSA进阶之低加密指数攻击相关推荐

  1. Extremely hard RSA 低加密指数攻击

    题目说明 没想到RSA4096都被你给破了,一定是我的问题,给了你太多信息,这次我只给你一个flag的加密值和公钥(Extremely hard RSA),仍然是RSA4096,我就不信你还能解出来. ...

  2. 低解密指数攻击_CTF中RSA的一些攻击思路

    本文为看雪论坛优秀文章看雪论坛作者ID:丿feng本文简略总结了前人的一些RSA攻击思路,代码或来源于网上或本人原创.并已在GitHub上开源,github地址:https://github.com/ ...

  3. 攻防世界-crypto-OldDriver(RSA低加密指数广播攻击) 方法总结

    今天遇到了一个新题型感觉有点意思记录一下; 开始 有个年轻人得到了一份密文,身为老司机的你能帮他看看么? 从题目下载附件打开~ 嗯? 这一大串是啥东西?以前没做过这种题阿?果断看WP了; RSA低加密 ...

  4. RSA密码——Wiener的低解密指数攻击(利用连分数理论)

    RSA密码--Wiener的低解密指数攻击 先描述一下RSA密码体制: RSA密码体制: 大素数p,qp,qp,q,模数n=pqn=pqn=pq,加密指数bbb,解密指数aaa,满足ab≡1(modϕ ...

  5. 羊城杯 Crypto RRRRRRRSA (连分数,低解密指数攻击原理)

    题面 import hashlib import sympy from Crypto.Util.number import *flag = 'GWHT{************}'flag1 = fl ...

  6. 基于低加密指数广播攻击(Hastad攻击)的更深一步学习

    低指数加密指数广播攻击 原型介绍: 低指数加密指数广播攻击(Low-Exponent RSA Broadcast Attack)是一种针对低指数RSA加密算法的攻击方法. 例题引入: 下面展示一些 内 ...

  7. BUUCTF rsa2(低密度指数攻击)

    题目: 首先,审计题目,我们可以从中发现我们想要的N和e两个条件,出现hashlib.md5,在rsa中d也称为解密指数,当d比较小的时候,e也就显得特别大了. 适用情况:e过大或过小(一般e过大时使 ...

  8. 加密指数有什么好买的?想象空间可能还没打开……

    本文作者:Messari分析师Roberto Talamas 在过去的一年里,加密市场一直在狂欢,并以惊人的速度增长.在疫情的刺激下,这种增长暴露了全球经济运作方式的缺陷,吸引了机构投资领域的关注.加 ...

  9. [crypto]-52-python3中rsa(签名验签加密解密)aes(ecb cbc ctr)hmac的使用,以及unittest测试用

    环境: 在ubuntu14.04下,记得安装:sudo pip3 install pycrypto 代码示例1: =========================== import base64 f ...

最新文章

  1. 大闸蟹的OO第二单元总结
  2. Blueprint简介-Android10.0编译系统(六)
  3. linux系统下的mysqlgt;aborted_MySQL令人头疼的Aborted告警案例分析
  4. 一起谈.NET技术,C#权限管理和设计浅谈
  5. Java BufferedReader skip()方法与示例
  6. 2019 年入门AI算法工程师,你需要掌握什么技能?
  7. java某个起点出发的最长路径_【leetcode-动态规划】矩阵中的最长递增路径
  8. iOS tableview简单动画
  9. 让计划任务生成的文件中包含当前日期
  10. android布局边缘加深,Android布局属性详解
  11. 电脑操作精典密笈60式
  12. matlab设计凸轮轮廓代码_数控铣床搞定曲轴、凸轮轴粗加工的奥秘、高招与绝对细节经验...
  13. Jenkins手动更新AWS 上面的ECS服务
  14. 疯狂的程序员——个人解读加经典语录
  15. OLED显示模块驱动原理及应用
  16. 2022-01-15 OpenCV(3.4.1) Error: Image step is wrong (The matrix is not continuous, thus its
  17. 动图文件太大怎么办?一招教你在线压缩GIF图片
  18. 微信小程序介绍、区别
  19. /*输入一个字符串,判断其是否为回文。(回文字符串是指从左到右读和从右到左读完全相同的字符)*/
  20. Overview Screen-Android 6.0开发者文档

热门文章

  1. STM32学习总结(一)——时钟RCC
  2. 新纪元财务、进销存一体化软件 v4.0 官方
  3. 杨辉三角中第 n 行第 m 个数字
  4. 华为AC6005基础调试步骤
  5. C++的html模板库——google-ctemplete
  6. 【生活常识】如何能安逸的活着?
  7. (7)web安全|渗透测试|网络安全 如何判断是否有CDN存在,并绕过CDN找到真正的ip的方法
  8. 基于web的教务管理系统-课程设计
  9. 【计算机组成原理 学习总结】第六章 总线系统(2)
  10. 如何将VSCode添加到鼠标右键菜单