日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CTF-RSA共模攻击 和 非共模攻击解密脚本

發布時間:2025/3/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CTF-RSA共模攻击 和 非共模攻击解密脚本 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定兩個不同的n的時候一定要看看n1,n2有沒有最大公約數(素數),如果有,那么該最大公約數就是兩者共同的p給定兩個相同的n的時候,那就要考慮共模攻擊了

共模攻擊

有兩組RSA密碼

提取公鑰信息

from Crypto.PublicKey import RSA import libnum import gmpy2c1=libnum.s2n(open('cipher1.txt','rb').read()) c2=libnum.s2n(open('cipher2.txt','rb').read())pub1=RSA.importKey(open('publickey1.pem').read()) pub2=RSA.importKey(open('publickey2.pem').read())n1 = pub1.n e1 = pub1.e n2 = pub2.n e2 = pub2.eprint(n1) print(n2) print(e1) print(e2)

解題腳本

from Crypto.PublicKey import RSA import libnum import gmpy2c1=libnum.s2n(open('cipher1.txt','rb').read()) c2=libnum.s2n(open('cipher2.txt','rb').read())pub1=RSA.importKey(open('publickey1.pem').read()) pub2=RSA.importKey(open('publickey2.pem').read()) n = pub1.n e1= pub1.e e2= pub2.es = gmpy2.gcdext(e1,e2) s1 = s[1] s2 = s[2]if s1<0:s1 = -s1c1 = gmpy2.invert(c1, n) elif s2<0:s2 = -s2c2 = gmpy2.invert(c2, n)m = pow(c1,s1,n)*pow(c2,s2,n) % n flag = libnum.n2s(m) print(flag)

得到flag:flag{interesting_rsa}

非共模攻擊



拿到題目,有兩個文件,里面分別有n,e,c
看了一下兩份文件的e相同,n不同
題目的名字是RSA_gcd,自然想到了求 n 1 n_1 n1?, n 2 n_2 n2?的最大公約數
求出的最大公約數若為素數的話,那么它就是p,題目自然就解出來了

import gmpy2 from Crypto.Util.number import * n1=23220619839642624127208804329329079289273497927351564011985292026254914394833691542552890810511751239656361686073628273309390314881604580204429708461587512500636158161303419916259271078173864800267063540526943181173708108324471815782985626723198144643256432774984884880698594364583949485749575467318173034467846143380574145455195152793742611717169602237969286580028662721065495380192815175057945420182742366791661416822623915523868590710387635935179876275147056396018527260488459333051132720558953142984038635223793992651637708150494964785475065404568844039983381403909341302098773533325080910057845573898984314246089 e1=65537 c1=9700614748413503291260966231863562117502096284616216707445276355274869086619796527618473213422509996843430296526594113572675840559345077344419098900818709577642324900405582499683604786981144099878021784567540654040833912063141709913653416394888766281465200682852378794478801329251224801006820925858507273130504236563822120838520746270280731121442839412258397191963036040553539697846535038841541209050503061001070909725806574230090246041891486506980939294245537252610944799573920844235221096956391095716111629998594075762507345430945523492775915790828078000453705320783486744734994213028476446922815870053311973844961n2=22642739016943309717184794898017950186520467348317322177556419830195164079827782890660385734113396507640392461790899249329899658620250506845740531699023854206947331021605746078358967885852989786535093914459120629747240179425838485974008209140597947135295304382318570454491064938082423309363452665886141604328435366646426917928023608108470382196753292656828513681562077468846105122812084765257799070754405638149508107463233633350462138751758913036373169668828888213323429656344812014480962916088695910177763839393954730732312224100718431146133548897031060554005592930347226526561939922660855047026581292571487960929911 e2=65537 c2=20513108670823938405207629835395350087127287494963553421797351726233221750526355985253069487753150978011340115173042210284965521215128799369083065796356395285905154260709263197195828765397189267866348946188652752076472172155755940282615212228370367042435203584159326078238921502151083768908742480756781277358357734545694917591921150127540286087770229112383605858821811640935475859936319249757754722093551370392083736485637225052738864742947137890363135709796410008845576985297696922681043649916650599349320818901512835007050425460872675857974069927846620905981374869166202896905600343223640296138423898703137236463508p1=p2=gmpy2.gcd(n1,n2) q1=n1/p1 q2=n2/p2d1=gmpy2.invert(e1,(p1-1)*(q1-1)) d2=gmpy2.invert(e2,(p2-1)*(q2-1))m1=pow(c1,d1,n1) m2=pow(c2,d2,n2) flag=long_to_bytes(m1)+long_to_bytes(m2) print flag 與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的CTF-RSA共模攻击 和 非共模攻击解密脚本的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。