本算法要解决的问题是离散对数问题(discrete logarithm problem,DLP)。问题的描述如下:
G是一个乘法循环群,其中有一个元素h,且其生成元为g。要求求得一个x,使得h=g x。
对于这样一个问题,有如下的几种情况考虑:
G是一个乘法循环群,其中有一个元素h,且其生成元为g。要求求得一个x,使得h=g x。
对于这样一个问题,有如下的几种情况考虑:
- 如果我们对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,并且可以使用并行算法来加速解决的过程;
- 如果我们知道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个群元素的计算步骤。