zoukankan      html  css  js  c++  java
  • RSA例题一

    首先看题目:

    e=3
    n=22885480907469109159947272333565375109310485067211461543881386718201442106967914852474989176175269612229966461160065872310916096148216253429849921988412342732706875998100337754561586600637594798877898552625378551427864501926224989873772743227733285336042475675299391051376624685754547818835551263597996620383338263448888107691240136257201191331617560711786674975909597833383395574686942099700631002290836152972352041024137872983284691831292216787307841877839674258086005814225532597955826353796634417780156185485054141684249037538570742860026295194559710972266059844824388916869414355952432189722465103299013237588737
    c=15685364647213619014219110070569189770745535885901269792039052046431067708991036961644224230125219358149236447900927116989931929305133870392430610563331490276096858863490412102016758082433435355613099047001069687409209484751075897343335693872741

    题目很直接,直接给了e,n,c,求m;

    首先看到e=3,而且n很大,如果明文很小,导致明文的三次方依旧小于n,那么对密文c直接开三次方就可以得到密文。

    如果e=3,

    那么:,e=3,

    另外还有一种情况:

    就是m的三次方比n大,但是并没有足够大,

    则我们可以设这样一个k满足:

    所以爆破k,如果c-kn能开三次式,那么就可以得到明文。

    代码:

     1 import gmpy2
     2 e = 3
     3 n= 22885480907469109159947272333565375109310485067211461543881386718201442106967914852474989176175269612229966461160065872310916096148216253429849921988412342732706875998100337754561586600637594798877898552625378551427864501926224989873772743227733285336042475675299391051376624685754547818835551263597996620383338263448888107691240136257201191331617560711786674975909597833383395574686942099700631002290836152972352041024137872983284691831292216787307841877839674258086005814225532597955826353796634417780156185485054141684249037538570742860026295194559710972266059844824388916869414355952432189722465103299013237588737
     4 c= 15685364647213619014219110070569189770745535885901269792039052046431067708991036961644224230125219358149236447900927116989931929305133870392430610563331490276096858863490412102016758082433435355613099047001069687409209484751075897343335693872741
     5 print ('n=', n)
     6 print ('c=', c)
     7 print ('[+]Detecting m...')
     8 result = gmpy2.iroot(c, 3)
     9 print ('  [-]The c has cubic root?', result[1])
    10 if result[1]:
    11   print ('  [-]The m is:', '{:x}'.format(result[0]))
    12 print ('[!]All Done!')
    13 # 低加密指数广播攻击

     这时明文m就被我们爆破出来:

    接着用工具将16进制转为ASCII字符就可以得到flag了:

    flag到手,大功告成!

  • 相关阅读:
    spring-boot BUG 集锦
    彻底卸载mysql
    mybatis -generator 逆向工程
    内网穿透工具使用
    Spring 笔记
    maven项目 @Resource报错 ava.lang.NoSuchMethodError: javax.annotation.Resource.lookup()Ljava/lang/String;
    log4j配置及异常、解决办法
    from…import * 语句与 import 区别
    python:__file__
    python安装yaml
  • 原文地址:https://www.cnblogs.com/dawn-whisper/p/11395678.html
Copyright © 2011-2022 走看看