概念引入:
全称为Adleman-Mander-Miller Method。在1977年他们发表的论文里只涉及了开平方根的方法,开n次方根并没有很详细的介绍。《Adleman-Manders-Miller Root Extraction Method Revisited》里三位中国人补充了他们开n次方根的方法。
可参考论文:AMM算法论文原稿
算法思路:
一、平方根(
≡ a mod p)
即是我们常说的二次剩余定理的求解,在AMM算法中求解思路如下:
求解步骤如下:
1、由二次剩余定理成立条件可知,
——(1)成立;
2、我们可以找到一个q值满足
——(2);
3、将(1)中表达式开方即可求得
——(3)
=>由a^2 = 1 mod p ==> a = 1or-1 mod p推导可得
4、判断
等于1还是-1:(且
奇数时)
当等于1时:不做任何多余操作;
但等于-1时:将(3)式和(2)式相乘成为新的(3)式;
5、将(3)进行重复上式中的3和4操作,直到我们推导得(
奇数时)
两边同乘(2)式,并开方即是我们所需的x值。
二、n次方根(
)
1、我们可知费马小定理:
——(1)
=>
=> 代入
,将a用
替换即可代换为(1)式;
2、我们可知AMM算法求解的情况为 r | (p-1) 的情况,所以我们可以写出以下条件:
p-1 = r^t * s
3、找到一个q值使其满足
——(2)
4、找到一个
值,使其满足 s | (r*
-1),可推导得:
——(3)
分类讨论:
(1)t=1时:
直接两边同乘a值,再对两边同时开r次方导,带入(1)式,即可求得x的值;
(2)t>=2时:
=>取(2)式可推导得:
其中K是对(3)式开r次方所有可能解的集合
当我们算Ki^r时,通过欧拉定理,我们可知Ki^r == 1 mod p
=>Ki * Kr-i =
,通过欧拉定理可得Ki*Kr-i == 1 mod p
接下来,开始像第一个中解平方根的思路开始求解第二种情况:
1、对(3)式开r次方,得到
2、可得到
两边同时乘以Kj可得
即是
判断r^(t-j)是否为r,重复进行上述的1和2操作
3、当结束后,我们可得以下等式:
4、两边同时乘以a值,可得
带入(1)式,对两边同时开r次方,我们可以求得我们所需的x值:
得证