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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python整数分节输出_pyfactor

發(fā)布時(shí)間:2025/3/15 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python整数分节输出_pyfactor 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

pyfactor

基于python的整數(shù)分解工具

介紹

pyfactor是一個(gè)完全使用python編寫的整數(shù)分解工具,最大可以分解十進(jìn)制60位以內(nèi)的RSA數(shù)n=pq。

這個(gè)工具是我的畢業(yè)設(shè)計(jì)作品,純粹是一個(gè)實(shí)驗(yàn)性質(zhì)的小程序,和目前程序的整數(shù)分解工具

(如:msieve,yafu等等)相比,運(yùn)行效率很低。但其分解能力可以完全勝任教學(xué)目的

支持的python版本:3.5以上

依賴的庫:SymPy(推薦版本為1.3以上)

建議直接安裝Python科學(xué)計(jì)算的發(fā)行版——Anaconda,默認(rèn)就預(yù)裝了常見的python的科學(xué)計(jì)算庫。

目前只提供了核心算法包pyfactor、命令行(CLI)工具pyfactor_cli.py。

圖形界面(GUI)工具pyfactor_gui.py正在開發(fā)中,使用python默認(rèn)的GUI套件tkinter。

CLI版本只完成了一個(gè)粗糙的原型,而GUI版本可以單獨(dú)設(shè)置參數(shù)、調(diào)用具體的算法,

因此,推薦學(xué)弟學(xué)妹使用GUI版本

關(guān)于幫助文檔

在doc文件中的算法介紹其實(shí)是我畢業(yè)論文中的一個(gè)片段,可以幫助同學(xué)們理解pyfactor中使用的整數(shù)分解算法。

如果要深入了解某個(gè)算法,或者想要改進(jìn)算法的話,推薦同學(xué)們閱讀參考文獻(xiàn)中列出的論文。

算法介紹

pyfactor使用了如下的整數(shù)分解算法

Pollard's rho (Brent改進(jìn)方法)

Pollard's p+1

Williams p-1

ECM (橢圓曲線因子分解算法)

SIQS (二次篩法)

其中 p-1方法 和 p+1方法實(shí)現(xiàn)了原始論文的第一階段算法;

ECM方法目前還不穩(wěn)定,找到十進(jìn)制20位以下的素因子應(yīng)該沒問題;

SIQS方法尋找光滑數(shù)仍然較慢,分解50位以下的整數(shù)應(yīng)該沒問題;

使用說明

pyfactor依賴SymPy,使用前需要安裝SymPy

該工具的目標(biāo)人群是學(xué)習(xí)整數(shù)分解算法的學(xué)弟學(xué)妹,對(duì)于較大的整數(shù)運(yùn)行效率慢的話,請(qǐng)不要吐槽(逃……)

pyfactor目前提供了一個(gè)命令行(CLI)工具 —— pyfactor_cli.py,

在命令行下運(yùn)行 pyfactor_cli.py,可以使用本工具。

圖形界面(GUI)工具 —— pyfactor_gui.py使用python tkinter開發(fā),可以在界面中選擇單獨(dú)的算法。

如果想要單獨(dú)調(diào)用某個(gè)整數(shù)分解算法的話,可以直接調(diào)用pyfactor這個(gè)python包

pyfactor_cli 命令行工具

pyfactor_cli命令行工具依次使用試除法、brent方法、p+1方法、p-1方法和SIQS尋找素因子。

-h顯示幫助信息

-v顯示版本信息

--rho=nPollard's rho方法的迭代次數(shù)限制為 n 次

--pp1=BWilliams p+1方法的光滑界設(shè)置為 B

--pm1=BPollard's p-1方法的光滑界設(shè)置為 B

--ecm=dECM方法尋找的素因子大小限制為十進(jìn)制 d 位

pyfactor_cli命令行工具目前不支持單獨(dú)使用某個(gè)整數(shù)分解算法,也不進(jìn)行素性測(cè)試。

如果要單獨(dú)調(diào)用具體的分解算法,可以在python中直接導(dǎo)入相應(yīng)的包,示范如下:

from pyfactor.rho import brent # 導(dǎo)入Brent方法(Pollard rho方法的改進(jìn)版本)

from pyfactor.pm1 import pm1 # 導(dǎo)入Pollard p-1方法

from pyfactor.pp1 import pp1 # 導(dǎo)入Williams p+1方法

from pyfactor.ecm import parallel_ecm as ecm # 導(dǎo)入ECM方法

from pyfactor.siqs import siqs_main as siqs # 導(dǎo)入SIQS方法

>>> brent(2**2**5+1)

641

>>> pm1(12341234)

73

>>> pp1(123412345)

35

>>> ecm(2**2**7+1)

59649589127497217

>>> siqs(760525083515850218314740691253136455584879)

(845041919143549452517, 899985037767881262787)

前四個(gè)算法的輸出是輸入整數(shù)的一個(gè)非平凡因子,siqs的輸出是兩個(gè)非平凡因子。

具體細(xì)節(jié)可以直接看源代碼。要注意,這些算法不會(huì)對(duì)輸入?yún)?shù)進(jìn)行檢驗(yàn),因此請(qǐng)確保輸入?yún)?shù)是合數(shù)。

SIQS算法的輸入?yún)?shù)要大于等于十進(jìn)制30位。

pyfactor_gui 圖形界面工具

pyfactor_gui 是 pyfactor 的一個(gè)GUI接口,支持單獨(dú)選擇某個(gè)整數(shù)分解算法。

同時(shí),pyfactor_gui還添加了素?cái)?shù)生成與檢驗(yàn)功能。

總結(jié)

以上是生活随笔為你收集整理的python整数分节输出_pyfactor的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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