RSA從原理到ctf解題(解題篇Ⅰ)

bugku rsa

一道關(guān)于rsa常規(guī)的ctf題目(來自bugku):
鏈接:https://ctf.bugku.com/files/98e8f374f63ee3ef4818621ceafcb78f/rsa.txt

rsa2.png

題目給出了e(公鑰)和N(p * q)
可以看到e是一個很大的數(shù),對于這種e很大的數(shù)我們一般會采用wiener attack進(jìn)行破解(wiener attack 是一種對e極大導(dǎo)致d會比較小的情況由wienner發(fā)明的一種破譯算法)。
在kali的RsaCtftool中集成了這種工具。


rsa3.png

可以看到n,e,d,p,q都得到了,這樣按照rsa的解密公式就可以得到明文了;
這里我們使用python編寫腳本:

#!coding:utf-8
#RSA
import libnum
 
p = 15991846970993213322072626901560749932686325766403404864023341810735319249066370916090640926219079368845510444031400322229147771682961132420481897362843199
q = 28805791771260259486856902729020438686670354441296247148207862836064657849735343618207098163901787287368569768472521344635567334299356760080507454640207003
n = p * q
e = 354611102441307572056572181827925899198345350228753730931089393275463916544456626894245415096107834465778409532373187125318554614722599301791528916212839368121066035541008808261534500586023652767712271625785204280964688004680328300124849680477105302519377370092578107827116821391826210972320377614967547827619
c = 38230991316229399651823567590692301060044620412191737764632384680546256228451518238842965221394711848337832459443844446889468362154188214840736744657885858943810177675871991111466653158257191139605699916347308294995664530280816850482740530602254559123759121106338359220242637775919026933563326069449424391192
phi = (p - 1) * (q - 1)
d = libnum.modular.invmod(e, phi)
m = libnum.n2s(pow(c, d, n)) 
print(m)  

這里使用的libnum庫是一個python的關(guān)于各種數(shù)學(xué)運(yùn)算的函數(shù)庫對于質(zhì)數(shù)生產(chǎn)和因數(shù)分解具有很大的優(yōu)勢;
運(yùn)行腳本:


rsa4.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容