1
7
让我们从波利格·赫尔曼背后的主要思想开始。假设我们得到y,g和p,我们想找到x,这样
K (mod p)是k=p-1。 "Baby-step giant-step" 需要O(p 0.5 Pohlig和Hellman提出的是求解这个方程
如果我们把对数取为两边的基g,这和
n可以分为
因此x==z(mod r)。 这是一个改进,因为我们只需要搜索范围0。。对于z的解r-1。再次“婴儿步-巨人步”可以用来改进对z的搜索。显然,这样做一次还不是一个完整的解决方案。即对p-1的每个素因子r重复上述算法,然后利用中国剩余定理从部分解中求x。如果p-1是无平方的,这就很好地工作了。 如果p-1可被素数幂整除,则可以使用类似的概念。例如,假设p-1=mq K . 在第一步中,我们计算z,使得x==z(mod q),如上所示。接下来我们要把它推广到解x==z'(mod q) ). 例如,如果p-1=mq 这就意味着我们必须找到这样的z'
因为我们已经知道z'==z(mod q),z'必须在集合{z,z+q,z+2q,…,z+(q-1)q}中。同样,我们可以做一个彻底的搜索z'或改进搜索与“婴儿步巨人步”。对q的每个指数重复这个步骤,这是因为知道x mod q 我 我+1 . |
2
1
我正在自己编写代码(JAVA)。我用Pollard-Rho求p-1的小素因子,然后用Pohlig-Hellman解DSA私钥。y=g^x。我也有同样的问题。。 更新:“更具体地说,我不明白下面是怎么计算的:现在用7531除以a^c0得到7531(a^2)=6735 mod p。” 如果你找到^c0的倒数,那就有意义了
|
Diret · 获取范围内每个数字的子倍数的算法 2 年前 |
Saif · 排序时python如何决定何时调用比较器? 2 年前 |
Wadu Hek · 查找列表中唯一的重复项 2 年前 |
Crawford Patten · 如何获得整数列表的四分位数 2 年前 |
MoonGoose · 如何在python中围绕特殊字符创建空间? 2 年前 |
taha khamis · 在一个数字中组合元素的省道 2 年前 |
Soup · 比O(n)更快地找到阶乘n模m 2 年前 |
BigO · 单词积分游戏不断增加数字[关闭] 2 年前 |