蒙哥马利(Montgomery)功率模量算法是一种快速计算a ^ b%k的算法,它是RSA加密算法的核心之一。蒙哥马利模乘的优点是减少了模数(在大数情况下)并简化了除法的复杂度(以2的k次幂为单位的除法只需要左移运算)。模幂运算是RSA的核心算法,它最直接地决定了RSA算法的性能。对于快速模幂运算的主题,现代西方数学家提出了许多解决方案,通常是先将指数模运算转换为乘法和模运算。这是整个蒙哥马利算法的本质。蒙哥马利算法不是独立的算法,而是三个独立且相互关联的算法的集合,其中包括蒙哥马利乘法模量,用于计算x& y(mod N)蒙哥马利归约法用于计算t& rho负-1(mod N)蒙哥马利功率模量,用于计算xy(mod N)。蒙哥马利幂乘法是RSA加密算法的核心部分。基本概念梳理出几个概念,假设在整数取模NNZN = {0,1,2,...,N& -1}之后得到一个集合。注:N在base-b系统中具有lN位。例如,十进制和100都以10为底,因为100 = 102,所以b = 10。在10的基数中,lN = 3的集合667被称为N的剩余类环。属于该集合Z的任何x都满足以下两个条件:1.正整数2。最大长度为N in本文用于基于ZN集合计算操作。简单地说一下原因,因为RSA基于大量操作,通常是1024位或2018位,并且我们的计算机无法存储一个完整的大量数字,因为它占用了太多空间,因此没有必要。因此,这种基于大量运算的加密系统基于计算时设置的ZN。当然,蒙哥马利算法也基于ZN。残差类环上有两个重要的运算,一个是简单运算,即加法和减法,另一个是复杂运算,即乘法。我们更熟悉的是对自然数集的运算。让我们看一下它是如何从自然数集上的运算发展为剩余环上的运算的。另外,如果您计算x& y(mod N)(0& le; x,y <N),请想象x& y 0& le; x + y& le 2& sdot;(N& minus; 1)& minus(N& minus; 1)& Le; x& minus; y& le;(N& minus; 1)我们可以简单地加减N来实现从自然数到余数的转换集群。另一种类型是乘法,即x& y(mod N)(0& le; x,Y< N),然后是0& le; x& y& le(N& -1)2如果在自然数集中,让t = x& y,则对于modN,我们需要计算t&减去(N& lfloor; t / N& rfloor;)加法和减法运算为非常简单,在此将不详述具体的计算,我们使用ZN& ADD来表示对剩余类环的加法运算。由于我们可以进行加法运算,因此我们可以扩展到乘法运算,算法如下,但这并不是一个好的解决方案,因为一般来讲,我们不直接进行w位乘法w位运算,因此将使用后来蒙哥马利乘法而不是求解。对于模运算,通常有以下方法:1.根据下面的公式,计算模运算t&(负)(N& lfloor; t / N& rfloor)。整个计算过程基于标准的数字表示。需要预先计算(也就是说,一些变量需要预先计算才能使用)涉及除法运算,这非常耗时且复杂。 2.本文使用Barrett归约算法,不做详细介绍,但基于标准的数字表示,具有以下功能。预计算需要使用蒙哥马利归约法将2点(lN + 1)和点(lN + 1)乘以3,这是下面将要讨论的算法,并且以下功能不基于标准数字表示(稍后将提及,基于蒙哥马利符号)需要预先计算,并且需要2乘以(lN)&乘以(lN)倍