• rsa,randon.seed+费马定理


    1. import gmpy2
    2. import random
    3. import time
    4. from Crypto.Util.number import *
    5. def get_prime(bits):
    6. x = 1
    7. while gmpy2.is_prime(x) == False:
    8. random.seed(round(time.time(),5))
    9. x = random.getrandbits(bits)
    10. return x
    11. hint = ""
    12. a1 = time.time()
    13. flag = "flag{***************}"
    14. p = get_prime(2048)
    15. q = get_prime(2048)
    16. n = p * q
    17. e = 65537
    18. m = bytes_to_long(flag.encode())
    19. assert n > m
    20. c = pow(m,e,n)
    21. print(n)
    22. print(c)
    23. hint+=str(time.localtime())
    24. hint+=str(time.time()-a1)
    25. m2 = bytes_to_long(hint.encode())
    26. e2 = 196611
    27. p2 = getPrime(1024)
    28. q2 = gmpy2.next_prime(p2)
    29. n2 = p2*q2
    30. assert n2 > m2
    31. c2 = pow(m2,e2,n2)
    32. print(n2)
    33. print(c2)
    34. #n1=449389319572014470973230701130712522617269811294117721031111991008431585050360094769229957883125144692171901233101564003762866045169460601700254891441878998743810037070537170855056466702105713343963726437141651081516150688905082129849562489646846756872586122801890652177495174154676725874072596207108180178755008058522945203093993733331873167443162263746938403044201113440457668163574342481361454421154163291201432319013385234751292922268166299917246608164679144459355173725895117315662317330324505156929077922670671914823996700321766811999551043586214703010131467697982137884162143358399786007967117340789211505834848813471803797101083738140019127129356248286854522464787917597152171952002118368747491099723673529923018951195522714900400225757160886780159504182902140132857743474716967975019342128486236748643365288547828026395873270777532526144687248477070253203339428149026199554962987646174586568177797380361174318868448467648171416588868990979461995030684403161898497550408697577695094783000808003197203603068043364687265824456069673330314452567416143754983137647607219859034406220590219587869898727679465514015732749105798134650890143215022311113143974714405713221391896497966231925409438383535066648782822255201778169275281703
    35. #c1=401489532945377793610793684722119773544780301600066410745513430092738470870254235710677331662917458735216486816223654944666672512914069274195244871184555059503843032370247894353363929996813688885280857203101709839776411016868985545599944237897372546401710041402579657231598311853522596463296090177664832759103736040102780428858301594805054838853076238331373482465072766841859415172741329175814259920949065993852870119473982972519779774470087935094963692097673607052443800723940091927016071427616754775915389245004208964143538205414854133746775614714447645057516665851780628694481268861808310238416724971673673850671343955386054575121362377868533055225219936712709474708031320743579595394353267596208729974198335174409673325772679039734706841988107519076516144633301371408301344929883397145523702189363308278963683356102257750758738297143036846718834812930796483716912661191147997005333798193659914573185697664706530774799114804036170190966523509331071964600280701252628276934131586398546602582672541075820188456265586487083315680880306767899236884202195162421559689536613740573005749847000477194096162091015847386298782974979446476432285118251267512895876728805199744415821498028998351171848530921695254428997423725875714923331577073
    36. #n2=15155267112260254814859334094046172735826002259080171081726998162357946701645037659523881592272031544049749021927125983252197909993392636398184049160807707719999605547760868696059871234441249045293267592302009677249269002811886149589869652213333369608947939768457152200437978105250737118847430275142343554191304134468404921824671763164876924921101985937224297479095246132228051655664880892772136476378294042631659251586654877292836243536438334288184387617801131434535466414123998495813296765847561162680781100446656391077184870802746066619879552452560641945080540683058930700833439189784657690146144976738557801495769
    37. #c2=2468578221703379861458008098241051507850837382948845085288946175636556753744182763176189585173648323464054032011039944322939163396161712722541432975739789351064988098201326803586126788175259878398963744821667593495161587855894677387881240566285601934559118064797092685909593247713834262369686831071897653756217369182373679039639016628932948775518889507209432291038498366540263588850133348471811624348709494110881127292350302658720685976197632586315945770832849119141593343924518836983738868912332048462058640564551286493338707636203013048694776131295632886983835291684044170004544049944003732133038154121113518892438

    核心思想,费马解p2,q2(用yafu分也很快, 查factordb网站也很快),因为这两个指数是挨着的。

    解出hint是time.localtime,从而可以求得a1的时间。

    在a1到time.localtime这3s多的时间内,有2个时间(浮点数,且小数点后只有5位)被转化成了种子从而生成p,q,需要爆破的数字并不多,大约3*10^5,而且从后往前爆破更快。貌似10^7密钥空间一般在几秒内,10^8在若干分钟内,再大耗费的时间就太长了。

    1. p2,q2=(123106730572541218855605566021385436071765753262738029208958530903965781875227909642974714736010685670143580347743415357832685249865725150245921795069888441073829479429807586105897472912969591388975228566729202050232896382465835682108694199213251295570982696527682862415340158808173324606996424204650675862831, 123106730572541218855605566021385436071765753262738029208958530903965781875227909642974714736010685670143580347743415357832685249865725150245921795069888441073829479429807586105897472912969591388975228566729202050232896382465835682108694199213251295570982696527682862415340158808173324606996424204650675860599)
    2. n2=15155267112260254814859334094046172735826002259080171081726998162357946701645037659523881592272031544049749021927125983252197909993392636398184049160807707719999605547760868696059871234441249045293267592302009677249269002811886149589869652213333369608947939768457152200437978105250737118847430275142343554191304134468404921824671763164876924921101985937224297479095246132228051655664880892772136476378294042631659251586654877292836243536438334288184387617801131434535466414123998495813296765847561162680781100446656391077184870802746066619879552452560641945080540683058930700833439189784657690146144976738557801495769
    3. import libnum
    4. phi=(p2-1)*(q2-1)
    5. e=196611
    6. c=2468578221703379861458008098241051507850837382948845085288946175636556753744182763176189585173648323464054032011039944322939163396161712722541432975739789351064988098201326803586126788175259878398963744821667593495161587855894677387881240566285601934559118064797092685909593247713834262369686831071897653756217369182373679039639016628932948775518889507209432291038498366540263588850133348471811624348709494110881127292350302658720685976197632586315945770832849119141593343924518836983738868912332048462058640564551286493338707636203013048694776131295632886983835291684044170004544049944003732133038154121113518892438
    7. d=libnum.invmod(e,phi)
    8. m2=pow(c,d,n2)
    9. print(libnum.n2s(m2))
    10. time2=(2021, 4, 28, 20, 42, 6, 2, 118,0)
    11. import time
    12. time1=time.mktime(time2)-3.1603143215179443
    13. time2=time.mktime(time2)
    14. import gmpy2,random
    15. n1=449389319572014470973230701130712522617269811294117721031111991008431585050360094769229957883125144692171901233101564003762866045169460601700254891441878998743810037070537170855056466702105713343963726437141651081516150688905082129849562489646846756872586122801890652177495174154676725874072596207108180178755008058522945203093993733331873167443162263746938403044201113440457668163574342481361454421154163291201432319013385234751292922268166299917246608164679144459355173725895117315662317330324505156929077922670671914823996700321766811999551043586214703010131467697982137884162143358399786007967117340789211505834848813471803797101083738140019127129356248286854522464787917597152171952002118368747491099723673529923018951195522714900400225757160886780159504182902140132857743474716967975019342128486236748643365288547828026395873270777532526144687248477070253203339428149026199554962987646174586568177797380361174318868448467648171416588868990979461995030684403161898497550408697577695094783000808003197203603068043364687265824456069673330314452567416143754983137647607219859034406220590219587869898727679465514015732749105798134650890143215022311113143974714405713221391896497966231925409438383535066648782822255201778169275281703
    16. import numpy
    17. for i in numpy.arange(time2,time1,-0.00001):
    18. random.seed(round(i,5))
    19. x = random.getrandbits(2048)
    20. if gmpy2.is_prime(x)==True and n1%x==0:
    21. p=x
    22. q=n1//x
    23. print('p=',p,'q=',q)
    24. break
    25. print('done')

    b'time.struct_time(tm_year=2021, tm_mon=4, tm_mday=28, tm_hour=20, tm_min=42, tm_sec=6, tm_wday=2, tm_yday=118, tm_isdst=0)3.1603143215179443'
    p= 29255955167459173822029202653748208731665372392075310136166091626575381119996561344943898926895111560376898745160876509298700464980231887621948926920057583752649963205840641291654838365453417505593997914971784293790085743184284527598476737057527689694922200354165364024522488494310943036055262843225458488560113074237945109027019763172911986120412620473828687488483196046813755180263850690491049425246819627692939001093191158687966930218499663030472933603946985975956492839271737062304560756111632672448716026348929763876173656518558040564823003900583478638946595821096363093296973637163241707021374227978181941716313 q= 15360610070658756452775981220974692269754488069112447574228228635172518259707134514408315074592577390698594736605248087796101036697451547100410265895327560411294149316110964728238874696235929203731881998113781125348646341501219405620572607850544026471698636266490132324671879327975938781232776798316450395970997145320000569958972563105862963186117576276208073997763946153235287770074359557092366500382435482039438236868834374950888321780977585512229188837801768702376220882499000782771015183089522410298091322352922782284547034389739802236095714242735319203659400058027730963273141420889040535277149816754727342652031
    done
    b'flag{8b583646-13e8-5ef7-97c6-34b636591265}'

  • 相关阅读:
    当需要在不同操作系统和编程语言环境中共享和处理 XML 数据时,可能会遇到哪些兼容性问题,以及如何解决?
    103.(cesium之家)cesium蜂巢图(正方形)
    投稿经验分享之三:SCI投稿之JEI录用
    java-php-python-springboot校园服装租赁系统计算机毕业设计
    激光雷达战场越来越激烈了
    软件设计模式系列之十四——代理模式
    CH340 各型号的区别
    Flask 的 ORM 模型 - 概述
    尚硅谷大数据项目《在线教育之实时数仓》笔记005
    事件相关电位ERP的皮层溯源分析
  • 原文地址:https://blog.csdn.net/amber_o0k/article/details/126855210