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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

BugkuCTF-Crypto题rsa

發(fā)布時(shí)間:2024/9/27 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BugkuCTF-Crypto题rsa 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

解題流程


n,e已經(jīng)給出,可以看出e特別大,在e特別大的情況下,可以使用wiener attack的方法進(jìn)行破解,正好工具RsaCtfTool集成了wiener attack的方法,所以可以直接使用RsaCtfTool計(jì)算私鑰。

典型的rsa…
密鑰的產(chǎn)生:
選兩個(gè)滿足需要的大素?cái)?shù)p和q,計(jì)算n= p x q, φ(n) = (p - 1) x (q - 1),其里φ(n)是n的歐拉函數(shù)值。
選一個(gè)整數(shù)e,滿足1< e < φ \varphi φ,且gcd(φ(n), e) = 1。通過(guò)d x e ≡ 1 mod φ(n),計(jì)算得出d。
以{ e,n }為公開密鑰,{d, n }為私鑰。

加解密都為模冪運(yùn)算
加密:c = m^e mod n,即得到密文 c
解密:m = c^d mod n,即得到明文m

分析

題里給了 n即由兩個(gè)大素?cái)?shù)p x q得到的, e, 以及密文enc,也就是給了{(lán)e,n }公開密鑰以及密文,我們需要的目標(biāo)是要獲得明文。
通過(guò)解密算法我們知道,對(duì)于m = c^d mod n,m是我們想要獲取的,c為密文,n也是已知的,然而d是不知道的,目標(biāo)就是要獲取d,該題因?yàn)閚和e是同數(shù)量級(jí)的,證明d會(huì)很小。

解決方案

這里推薦一個(gè)工具RsaCtfTool
下面可直接利用這個(gè)工具獲得 p, q和d。
python RsaCtfTool.py --createpub -n
python RsaCtfTool.py --publickey test.pem --private > test.key
python RsaCtfTool.py --key test.key --dumpkey

注意:
生成公鑰或者私鑰文件可能有亂碼,運(yùn)行出現(xiàn)格式錯(cuò)誤,刪除即可

#!/usr/bin/python # -*- coding=utf8 -*- import gmpy2 from libnum import n2sn = '460657813884289609896372056585544172485318117026246263899744329237492701820627219556007788200590119136173895989001382151536006853823326382892363143604314518686388786002989248800814861248595075326277099645338694977097459168530898776007293695728101976069423971696524237755227187061418202849911479124793990722597'e = '354611102441307572056572181827925899198345350228753730931089393275463916544456626894245415096107834465778409532373187125318554614722599301791528916212839368121066035541008808261534500586023652767712271625785204280964688004680328300124849680477105302519377370092578107827116821391826210972320377614967547827619'enc = '38230991316229399651823567590692301060044620412191737764632384680546256228451518238842965221394711848337832459443844446889468362154188214840736744657885858943810177675871991111466653158257191139605699916347308294995664530280816850482740530602254559123759121106338359220242637775919026933563326069449424391192'p = '15991846970993213322072626901560749932686325766403404864023341810735319249066370916090640926219079368845510444031400322229147771682961132420481897362843199'q = '28805791771260259486856902729020438686670354441296247148207862836064657849735343618207098163901787287368569768472521344635567334299356760080507454640207003'd = '8264667972294275017293339772371783322168822149471976834221082393409363691895'n1 = gmpy2.mpz(n) enc1 = gmpy2.mpz(enc) d1 = gmpy2.mpz(d)r = gmpy2.powmod(enc1, d1, n1) print (r) s = n2s(r) print (s)

結(jié)果為:

flag{Wien3r_4tt@ck_1s_3AsY}

總結(jié)

以上是生活随笔為你收集整理的BugkuCTF-Crypto题rsa的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。