Calculationof the montgomery product:
输入:n-bit素数M、蒙哥马利基数R=2n、0≤A、B﹤M-1、预先计算M’=-M-1mod R
输出:Z=MonPro(A,B)= AⅹBⅹR-1 mod R
-
T←AⅹB
-
Q←TⅹM’mod R
-
Z←(T+QⅹM)/R
-
If Z≥M then Z←Z-M end if
-
Return Z
Proof:
R -1mod M
RR -1≡1mod M
因此存在k 使得:RR -1= k M+1. K为M’
RR -1=M’M+1.
T+QⅹM= T+ T M’M
= T+ T(RR -1)
= T RR -1
(T+QⅹM)/R= TR-1
所以说Z最后还是计算的AⅹBⅹR-1
MontgomeryModular Multiplication最大的优势在于 舍去大数模乘中的除法,从而转换成移位,极大地降低了大数模乘的运算量。
为了简化计算可以把输入设为:AR modM, BR mod M这样计算出的结果为ABR mod p
在写SM2算法时,有一点需要注意,输入为1 和R,利用蒙哥马利模乘算法计算的结果仍为1.