Kangaroo算法

Kangaroo算法是用于解决离散对数问题的一种方法,尤其适用于已知解的范围0<a<=x<=b<n的情况。相比Shanks' baby step-giant step method和Pollard's rho method,Kangaroo算法预期的操作步骤约为2*(b-a)1/2,能更有效地利用给定的限制条件。Shanks的方法在无额外信息时表现良好,而Pollard的rho方法不利用范围信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    本算法要解决的问题是离散对数问题(discrete logarithm problem,DLP)。问题的描述如下:

       G是一个乘法循环群,其中有一个元素h,且其生成元为g。要求求得一个x,使得h=g x

    对于这样一个问题,有如下的几种情况考虑:

  1. 如果我们对x没有任何的信息,只知道x满足0<x<n=ord(g),可以使用如下的算法来解决:
    • Shanks' baby step-gaint step method:时间和空间的需求是一个const*n1/2
    • Pollard's rho method:需要的时间约等于(PI*n/2)1/2,并且可以使用并行算法来加速解决的过程;
  2. 如果我们知道x满足0<a<=x<=b<n=ord(g):
    • Shanks' baby step-gaint step method同样可以解决:时间和空间的需求是一个const*(b-a)1/2
    • Pollard's rho method不能利用到这个信息;
    • Pollard’s Kangaroo算法:就是我们将要具体讲解的算法,它的预期操作步骤为2*(b-a)1/2个群元素的计算步骤。
      形象的来说,Pollard's Kangaroo算法就是使得两只袋鼠在解空间里面各自跳跃,其中一只为驯化的袋鼠,它的参数都是确定的,而另一只为野生的袋鼠,它的参数是要求的。驯化袋鼠每次跳跃之后都会做一个陷阱,如果野生袋鼠的某次跳跃碰到了这个陷阱,则表明他们的参数是一致的。这样,就可以使用驯化袋鼠的参数来推导出野生
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值