蒙哥马利乘法:概念、方法与RNS算法解析
1. 蒙哥马利乘法概述
蒙哥马利乘法(MMM)在模乘(MM)中极为有用,至今在提升效率方面表现卓越。在计算蒙哥马利乘法时,我们需要计算蒙哥马利积。给定两个数 (X) 和 (Y)((X, Y < m)),要计算 (X\cdot Y \pmod{m})。我们引入蒙哥马利约化元素 (p),满足 (\gcd(m, p) = 1),则蒙哥马利积可表示为:
[MonProd(X, Y) = X \times Y \times p^{-1} \pmod{m}]
若 (p) 选为2的幂次方,将有助于提高数学运算(如除法和乘法)的速度,因为蒙哥马利乘法可以通过简单的移位和加法操作高效执行。
执行蒙哥马利乘法的方法可分为两类:
- 乘法和约化分开进行。
- 乘法和约化集成进行。
集成程度取决于乘法和约化之间的切换频率,同时,扫描操作数和乘积的方式也是一个重要因素。扫描方式有以下几种:
1. 独立操作数扫描
2. 少切换操作数扫描
3. 高切换操作数扫描
4. 高切换乘积扫描
5. 少切换混合扫描
蒙哥马利积常用于密码系统中的蒙哥马利乘法。当选择 (p = 2^k),且 (m) 为 (k) 位整数((2^{k - 1} \leq m < 2^k)),且 (p) 和 (m) 互质时,从相关算法步骤可得:
[R’ = (X’Y’)p^{-1} \pmod{m}]
[T p^{-1} = (T + T (-m)^{-1}(\pmod{p}) m)/p \pmod{m}]
设 (T p^{-1} = u),则