libnum庫是一個關於各種數學運算的函數庫,它包含common maths、modular、modular squre roots、primes、factorization、ECC、converting、stuff等方面的函數,個人覺得結合gmpy2庫、PyCrypto庫一起來使用會使計算變得非常簡便。
------------------------------------------------------------------------
0x1 安裝
git clone https://github.com/hellman/libnum cd libnum python setup.py install
-= 2018.01補充 =-
原版的libnum只支持python2,若是用python3安裝會因為沒有reduce、xrange而報錯。
-= 2020.05補充 =-
python 3 compatibility:
git clone https://github.com/warnerjon12/libnum cd libnum python setup.py install
0x2 坑爹的pip安裝
Pypi上的libnum介紹是python3 comptaible fork for libnum - Some number theoretic functions.
如果你使用pip安裝:
pip install libnum
這個版本只能在py3中使用,但能在py2順利安裝,一使用就會報錯,因為其strings.py的寫法只適應於py3。
0x3 常用的Converting
數字型(不論是十六進制還是十進制)與字符串之間的轉換:
import libnum s="flag{pcat}" print libnum.s2n(s)
import libnum n=0x666c61677b706361747d print libnum.n2s(n) #這個轉換不用在意十六進制的位數是否為偶數
二進制與字符串之間的轉換:
import libnum b='01110000011000110110000101110100' print libnum.b2s(b) #二進制的位數最好是8的倍數
import libnum s='pcat' print libnum.s2b(s)
數字轉二進制串,前面補0:
from libnum import * n=0xfff print s2b(n2s(n))
0x4 質數&因數分解
生成質數:
print libnum.generate_prime(1024)
因數分解:
print libnum.factorize(1024)
0x5 其他的
等pcat有空再更新。
