您好,登錄后才能下訂單哦!
看題的時候發現了libnum庫,覺得還行,mark下來留著以后用。
libnum庫是一個關于各種數學運算的函數庫,它包含common maths、modular、modular squre roots、primes、factorization、ECC、converting、stuff等方面的函數,使計算變得非常簡便。
Linux:
git clone https://github.com/hellman/libnum
cd libnum
python setup.py install
Windows: 下載并解壓縮它
cd libnum
python setup.py install
數字型(不論是十六進制還是十進制)與字符串之間的轉換:
import libnum
s="flag{aaa}" print(libnum.s2n(s))
import libnum
n=0x1889377532526823825789 print(libnum.n2s(n))
這個轉換不用在意十六進制的位數是否為偶數
二進制與字符串之間的轉換:
import libnum
b=''0100110001111001011100100110100101100011''
print(libnum.b2s(b))
二進制的位數最好是8的倍數
import libnum
s='Lyric'
print(libnum.s2b(s))
生成質數:
libnum.generate_prime(1024)```
因數分解:
libnum.factorize(1024) ```
某道ctf中用于解題的腳本
#!coding:utf-8
#RSA
import libnum
p = 153342497773165720646471265753416937042378585974980600696228054280777067742118708748260148517704664270966750151230879697775745552153863038444052153549264336387543725044459125347571130674447630098572217293190874462747269265287826289527205379087607586543990164027856167617915226681078528645859423680436167557483
q = 129436166908331611554181128183182589454341960422674433223367230133752416435382709963204302422852744109315802741839344452057748805269289759475931297256986800620920742486276489445279916851138781600867108041340752127975698302831477903370939720026728065273734373673806527712975351406042878379903498709089420733911
n = p * q
e = 65537
c = 3936037472808777071308929516154413904323194935340248548327659414834313812796990403988095925642368079268517801058041656316181783492880322278956562595000260504254255037928037412478862828849501974686520351939250369196179274580006017942557434135384292957158484997604383679828898427028204052111920452543131945953240230799711698405726536262211948501121455918845580494839990978306064590105574542739676508765285583405238287804427122294772381588739840326134102495086948522002204793929245624099798045204501372180048163169180023176545149820275841071238390132249159995705693884766122963689536408510312667760860122892135226523829
phi = (p - 1) * (q - 1)
d = libnum.modular.invmod(e, phi)
m = libnum.n2s(pow(c, d, n))
print(m)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。