0.说明
蒙哥马利约减算法
由上篇文章继续,蒙哥马利约减算法为F,可以做到F(x)=x( imes)R' mod N
1.目标
欲求z=x*y mod N
2.过程
代入F(xyR modN)=xyRR' mod N=xy mod N=z,即可得到结果
所以我们需要先求得xyR mod N,modN是怕参数越界吧,<NR才行
对其进行变形,R'为R mod N 的逆元
xyR mod N=xRyRR' mod N=F(xRyR modN)
z=F(xyR modN)=F(F(xRyR modN))
在这里我有个疑问,xyR不是直接移位就可以了吗?下面为啥还要调用一次约减F
应该是怕xRyR参数超过参数限制范围NR,所以要进行modN运算,而modN运算就要调用约减避免掉除法才会更快
xR mod N=(xRR)R' mod N=F(x(RR modN))
所以,我们预结算RR modN即可加速xR yR的计算
z=F(F( xRyR ))=F(F( F(x(RR modN))F(y(RR modN)) ))
这个就是蒙哥马利模乘算法
RR的计算可以是移位操作,但最后有个乘xR*yR是无法避免的,其主要思想是避免除法
这里面所有的除法都变为了移位操作