高速素因数分解ソフト Msieve を使ってみた
高速素因数分解ソフト Msieve を使ってみます
https://sourceforge.net/projects/msieve/
ubuntu 18.04 on MacBookPro Docker でセットアップします
$ sudo apt install -y build-essential libgmp3-dev zlib1g-dev libecm-dev
$ wget https://jaist.dl.sourceforge.net/project/msieve/msieve/Msieve%20v1.53/msieve153_src.tar.gz
$ tar xvf msieve153_src.tar.gz
$ cd msieve-1.53
$ make all ECM=1
素因数分解するターゲットとなる数を作ります
from Crypto.Util.number import *
b = 128
p = getPrime(b)
q = getPrime(b)
n = p * q
print("p :", p)
print("q :", q)
print("n :", n)
p : 301232924948100841508504118779499055081
q : 237351279678538533736478579313958901047
n : 71498020217740890560454784710693626062632337432666489427782288145405681569807
msieve で素因数分解します
$ time ./msieve -q 71498020217740890560454784710693626062632337432666489427782288145405681569807
71498020217740890560454784710693626062632337432666489427782288145405681569807
p39: 237351279678538533736478579313958901047
p39: 301232924948100841508504118779499055081
146.19user 0.16system 2:26.52elapsed 99%CPU (0avgtext+0avgdata 41036maxresident)k
0inputs+12544outputs (0major+19742minor)pagefaults 0swaps
128bit の素数 2 つからなる数だとノートパソコンで 2 分ちょっとで分解できました。