Pollard Rho分解方法

时间:2012-05-29 08:21:52

标签: algorithm

Pollard Rho分解方法使用函数发生器f(x)= x ^ 2-a(mod n)或f(x)= x ^ 2 + a(mod n),是此函数的选择(抛物线)有任何意义,或者我们可以使用任何函数(立方,多项式或甚至线性),因为我们必须识别或找到属于同一同余类模数的数字以找到非平凡的除数?

1 个答案:

答案 0 :(得分:2)

Knuth Vol II(计算机程序设计的艺术 - 数值算法)第4.5.4节Knuth说

  

此外,如果f(y)mod p表现为集合{0的随机映射,   1,... p-1}进入自身,练习3.1-12表示平均值   至少这样的m将是有序的sqrt(p)......来自于理论   第3章,我们知道线性多项式f(x)= ax + c不会   我们的目的是随机的。下一个最简单的案例是   二次方,比如f(x)= x ^ 2 + 1.我们知道这个函数是   足够随机,但我们缺乏知识倾向于支持   随机假设和实证检验表明这个f确实存在   基本上像预测的那样工作

说f(x)的长度大约为sqrt(p)的概率理论特别假设可以有两个值y和z,使得f(y)= f(z) - 因为f是随机选择。 Pollard Rho中的rho包含这样一个连接点,该循环包含多条通向它的线。对于线性函数f(x)= ax + b然后对于gcd(a,p)= 1 mod p(可能因为p是素数)f(y)= f(z)意味着y = z mod p,所以没有这样的交汇点。

如果你看http://www.agner.org/random/theory/chaosran.pdf,你会发现随机函数的预期周期长度大约是状态大小的sqrt,但是随机双射的预期周期长度是关于状态大小。如果你只想在评估时生成随机函数,你可以看到,如果函数是完全随机的,那么到目前为止看到的每个值都可以随机再次选择以找到一个循环,因此关闭循环的几率增加使用循环长度,但如果函数必须是可逆的,则关闭循环的唯一方法是生成起点,这种可能性要小得多。