python整数分节输出_pyfactor

pyfactor

基于python的整数分解工具

介绍

pyfactor是一个完全使用python编写的整数分解工具,最大可以分解十进制60位以内的RSA数n=pq。

这个工具是我的毕业设计作品,纯粹是一个实验性质的小程序,和目前程序的整数分解工具

(如:msieve,yafu等等)相比,运行效率很低。但其分解能力可以完全胜任教学目的

支持的python版本:3.5以上

依赖的库:SymPy(推荐版本为1.3以上)

建议直接安装Python科学计算的发行版——Anaconda,默认就预装了常见的python的科学计算库。

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

图形界面(GUI)工具pyfactor_gui.py正在开发中,使用python默认的GUI套件tkinter。

CLI版本只完成了一个粗糙的原型,而GUI版本可以单独设置参数、调用具体的算法,

因此,推荐学弟学妹使用GUI版本

关于帮助文档

在doc文件中的算法介绍其实是我毕业论文中的一个片段,可以帮助同学们理解pyfactor中使用的整数分解算法。

如果要深入了解某个算法,或者想要改进算法的话,推荐同学们阅读参考文献中列出的论文。

算法介绍

pyfactor使用了如下的整数分解算法

Pollard's rho (Brent改进方法)

Pollard's p+1

Williams p-1

ECM (椭圆曲线因子分解算法)

SIQS (二次筛法)

其中 p-1方法 和 p+1方法实现了原始论文的第一阶段算法;

ECM方法目前还不稳定,找到十进制20位以下的素因子应该没问题;

SIQS方法寻找光滑数仍然较慢,分解50位以下的整数应该没问题;

使用说明

pyfactor依赖SymPy,使用前需要安装SymPy

该工具的目标人群是学习整数分解算法的学弟学妹,对于较大的整数运行效率慢的话,请不要吐槽(逃……)

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

在命令行下运行 pyfactor_cli.py,可以使用本工具。

图形界面(GUI)工具 —— pyfactor_gui.py使用python tkinter开发,可以在界面中选择单独的算法。

如果想要单独调用某个整数分解算法的话,可以直接调用pyfactor这个python包

pyfactor_cli 命令行工具

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

-h显示帮助信息

-v显示版本信息

--rho=nPollard's rho方法的迭代次数限制为 n 次

--pp1=BWilliams p+1方法的光滑界设置为 B

--pm1=BPollard's p-1方法的光滑界设置为 B

--ecm=dECM方法寻找的素因子大小限制为十进制 d 位

pyfactor_cli命令行工具目前不支持单独使用某个整数分解算法,也不进行素性测试。

如果要单独调用具体的分解算法,可以在python中直接导入相应的包,示范如下:

from pyfactor.rho import brent # 导入Brent方法(Pollard rho方法的改进版本)

from pyfactor.pm1 import pm1 # 导入Pollard p-1方法

from pyfactor.pp1 import pp1 # 导入Williams p+1方法

from pyfactor.ecm import parallel_ecm as ecm # 导入ECM方法

from pyfactor.siqs import siqs_main as siqs # 导入SIQS方法

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

641

>>> pm1(12341234)

73

>>> pp1(123412345)

35

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

59649589127497217

>>> siqs(760525083515850218314740691253136455584879)

(845041919143549452517, 899985037767881262787)

前四个算法的输出是输入整数的一个非平凡因子,siqs的输出是两个非平凡因子。

具体细节可以直接看源代码。要注意,这些算法不会对输入参数进行检验,因此请确保输入参数是合数。

SIQS算法的输入参数要大于等于十进制30位。

pyfactor_gui 图形界面工具

pyfactor_gui 是 pyfactor 的一个GUI接口,支持单独选择某个整数分解算法。

同时,pyfactor_gui还添加了素数生成与检验功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值