DLP中常用算法

Pohlig-Hellman 算法(光滑阶)

给定 a,b,p,p 是素数,求 x,axb(modp) 在模 p 下,设该群的生成元为 g,则有

aga1(modp)bgb1(modp)

联立条件有

ga1xgb1(modp)

由欧拉定理得ϕ(p)=p1,则有a1x=b1(mod(p1))

1.将 p-1 分解,即 p1=p1k1p2k2pmkm

2.将 x 表示成pi 进制, 列出方程 x=pi0a0+pi1a1+...+piki1aki1

3.令 r=1,求(ax)p1pirbp1pir(modp)

4.将 2 中的公式代入到 3,展开得到 aa0p1pia(p1)a1a(p1)pia2...a(p1)piki2aki1bp1pi(modp)

5.从第二项开始,后面每项都是 1,欧拉定理:a(p1)1(modp),化简得到的式子为 aa0p1pibp1pi(modp) 因为该方程只有 a0 未知,所以可在[0,pi-1]范围内爆破出 a0

6.再令 r = 2,3,4...ki,重复步骤 3,即可求出所有的a2,a3....aki1,从而得到 m 个关于 x 的方程,最后使用 CRT 进行求解即可。

总结:将 p-1 的 m 个质因子,分别求出其方程内的所有系数 a,从而构造了 m 个关于 x 的方程,最终利用 CRT 求解。


DLP中常用算法
https://sch01ar.github.io/2023/02/24/DLP中常用算法/
作者
Roo1e
发布于
2023年2月24日
许可协议
来发评论吧~
Powered By Valine
v1.5.1