简述大数分解算法Pollard Rho和Pollard p-1
大数分解问题其实至今都是一个世界级难题,最常见的分解法是从2一直找到sqr(N),作为一个密码学专业的学生,每次看到别人这么做来进行因子分解,自己都控制不住想要制止他,因为这个算法的效率简直太太太太太低了。
于是,简单介绍一下牛逼哄哄的Pollard算法,专制各种大数。
先说rho算法。
rho算法其实是一种概率上的算法,虽然是靠概率,但是其准确率非常高(99.9%),更重要的是,该算法效率极高。其主要基于密码学当中的一个“生日悖论“来进行算法的设计。简单来讲就是,我们将N的两个因子x和y(就假设它有两个)从一大堆数里挑出来的概率非常小,但是如果我们挑满足x-y等于某个数的话,概率就要大很多。更进一步,如果我们找gcd(|x-y| ,N)呢?那么概率就会更大,就是这么个道理。
关于Rho算法,要注意有可能会进入死循环,也就是说我们要在算法中对其进行判圈,具体的做法是,每次a=f(a),再找一个b=f(f(b)),如果有一个时刻a=b那么就退出循环,因为b是以两倍的速度走得,当b追上了a,那么b至少已经走完一圈了。
再说p-1算法。
这种方法是在p-1的素数分解式中不含有大于预定B值的素因数的情况下,找到一个基本的素数p,求出一个数的素因数。方法有点特殊,它只能应用在求整数n的一个素因子p,且p-1能被“小”因子整除的情况下,除此之外该方法无法正常应用。但是这个方法运用起来相当简单,所以在防止因式分解攻击时,必须考虑这一方法
参考资源:
Pollard-rho算法详解.pdf
大数质因解:浅谈Miller-Rabin和Pollard-Rho算法
简述大数分解算法Pollard Rho和Pollard p-1相关推荐
- 64位以内Rabin-Miller 强伪素数测试和Pollard rho 因数分解解析
在求解POJ1811题Prime Test中应用到的两个重要算法是Rabin-Miller强伪素数测试和Pollard r因数分解算法.前者可以在的时间内以很高的成功概率判断一个整数是否是素数.后者可 ...
- 整数的素因子分解:Pollard rho method
参考: 1.CLRS<算法导论> 2.http://www.csh.rit.edu/~pat/math/quickies/rho/#algorithm Pollard rho方法是随机算法 ...
- 大整数分解——Pollard Rho算法
延续上一篇,这次来讲一讲大整数分解算法的应用. 要解决的问题很简单,对一个整数进行分解质因数. 首先还是效率非常低的暴力算法,相信大家都会,不多提. 和上次一样,当数达到非常大的时候,分解将变得非常困 ...
- 因数分解 Pollard rho
因数分解 Pollard rho 算法思路 随机生成两个数a,ba,ba,b,然后求gcd(n,a−b)\gcd\pod{n,a-b}gcd(n,a−b),如果其值不为111,则这个数就是nnn的一 ...
- c语言用rho函数求复数模长,Pollard Rho 算法简介
$\text{update 2019.8.18}$ 由于本人将大部分精力花在了cnblogs上,而不是洛谷博客,评论区提出的一些问题直到今天才解决. 下面给出的Pollard Rho函数已给出散点图. ...
- 素数判定质因数分解(数论)(Miller Rabin)(Pollard Rho)
太玄学了! 我真的被概率的魅力折服了.此前我认为1便是1,0.9999999999-便是0.9999999999-. 但实际上它们有着千丝万缕的关系. 试想,如果一件事发生的概率是0.99999999 ...
- 数学--数论--随机算法--Pollard Rho 大数分解算法 (带输出版本)
RhoPollard Rho是一个著名的大数质因数分解算法,它的实现基于一个神奇的算法:MillerRabinMillerRabin素数测试. 操作流程 首先,我们先用MillerRabinMille ...
- 数学--数论--随机算法--Pollard Rho 大数分解算法(纯模板带输出)
ACM常用模板合集 #include <bits/stdc++.h> using namespace std; typedef long long ll; ll pr; ll pmod(l ...
- Poj 1811 Prime Test 素数测试 Miller-Rabin 与 整数的因子分解 Pollard rho
随机化算法,想尝试自己写一下,最后还是变成了抄代码... 代码参考了:POJ 1811 Prime Test(大素数判断和素因子分解) - kuangbin - 博客园 学习链接: Miller-Ra ...
最新文章
- python中的turtle函数_1.常用turtle功能函数
- 线段树-离散化处理点
- 【安全牛学习笔记】kali TOP10 安全工具:
- 【个人笔记】rabbitMQ下Fanout与Topic两种模式同时用注意事项
- 大话程序猿眼里的高并发架构
- HDU Calling Extraterrestrial Intelligence Again
- Go - cgo访问C数组 内存
- 植保飞行器(G 题)--2021 年全国大学生电子设计竞赛
- RAW到底比JPG强在哪里
- html编辑器pp,在线轻设计工具之H5
- 谷歌大牛Jeff Dean撰文:深度学习研究的黄金十年
- 未来不迎,当时不杂,过往不乱
- linux 赋权文件,linux文件赋权
- BeagleBone Black 从零到一 (2 MLO、U-Boot)_spl
- Bootstrap【第二章】全局CSS之排版代码表格
- rd授权管理器不显示服务器,2008 r2 找不到RD授权管理器
- YAML——基本语法
- java判断日期是否节假日_java 判断日期是否是节假日
- 阴阳师推出AR现世召唤,让式神出现在现实世界
- python变量加点_小白学 Python(4):变量基础操作
热门文章
- php xml expat,PHP 和 XML: 使用expat函数(一)
- 还原竖式:下图的乘法竖式中,每一个星号代表一个数位。若出现的数字有且仅有2, 3, 5, 7四种,你能将此竖式完全还原吗?
- 音频编辑软件-Steinberg WaveLab Elements 10.0.40 WiN-MAC
- 电工基础知识分享(四):图文并茂,史上最全万用表使用手册
- 理解Barra Risk Model:Investment Tools History
- codeforces 617E XOR and Favorite Number 莫队
- 随机生成字符串、数字
- 解密QQ消息文件格式
- 关于程序员的第二职业
- BLE协议--SMP(安全管理协议)