【模板】Pollard-Rho算法

一、题目

电磁看题

二、解法

作者讲的解法只是一个缩略版,要想获得更好的理解请参照大佬的博客

0x01 生日悖论
如果你不是很了解,点此观看
生日悖论告诉了我们一个道理,也就是我们用组合计算的方式会比单个确切值更有概率得到答案。什么意思呢?举个例子,我们要找到 x x x,用 r − l r-l rl的方式比直接 r a n d rand rand概率有更大概率得到 x x x,这里作者就不给详细证明了,感性理解。
所以与其直接 r a n d rand rand,我们尝试用组合计算的方式生成我们的因数。

0x02 p o l l a r d _ r h o pollard\_rho pollard_rho的随机函数
我们考虑生成一个伪随机数列,考虑用组合的方式生成因数计算 g c d gcd gcd p o l l a r d pollard pollard给出了他的函数:
f ( x ) = x ∗ x + c ( m o d N ) f(x)=x*x+c (mod N) f(x)=xx+c(modN)
其中 c c c是我们用 r a n d rand rand生成的一个函数,这个函数大概长这样。

可以看出,虽然它生成的数较为随机,但还是存在循环节,所以才叫伪随机数,生成数列的轨迹很像希腊字母 ρ \rho ρ,所以这个算法也叫 p o l l a r d _ r h o pollard\_rho pollard_rho算法。

0x03 基于 f l o y d floyd floyd算法优化的 p o l l a r d _ r h o pollard\_rho pollard_rho
因为 p o l l a r

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值