【转】蒙哥马利算法学习

前言

蒙哥马利算法并不是一个独立的算法,而是三个相互独立又相互联系的算法集合,其中包括:

  • 蒙哥马利乘模,是用来计算x⋅y (mod N)
  • 蒙哥马利约减,是用来计算t⋅ρ−1 (mod N)
  • 蒙哥马利幂模,是用来计算xy (mod N)

蒙哥马利幂乘是RSA加密算法的核心部分。

1、蒙哥马利模乘

模乘是为了计算a b ( m o d N ) ab\pmod{N}ab(modN)。普通算法中,在计算模N时,利用的是带余除法,除法运算需要太多次乘法,计算复杂度较高,蒙哥马利算法的思想就是利用进制表示简化除法运算,转化成位运算。

在这里插入图片描述
我们称这个算法叫蒙哥马利约简算法。所以说,蒙哥马利约简的产生是为了蒙哥马利模乘计算服务的。

2、蒙哥马利约简

根据上述分析可知蒙哥马利算法的核心在于蒙哥马利约简。而且前面提到,蒙哥马利算法的主要思想是把取模运算变得简单,到底是怎么做到的呢?

在这里插入图片描述
在这里插入图片描述

3、蒙哥马利模乘流程

在这里插入图片描述

4、复杂度分析

蒙哥马利算法是为了简化模N NN的复杂度,当N是比较大的数时,模N需要多次的加、减、乘运算。从上述过程看来,蒙哥马利约简的复杂度确实降低了,因为只有模R 的移位运算

在这里插入图片描述

5、蒙哥马利模幂

在这里插入图片描述

根据重复平方-乘方法,模幂运算中就有很多步的模乘运算,这恰恰可以发挥蒙哥马利模乘的优势。具体的,在重复平方法的每一次模乘中都利用蒙哥马利模乘进行计算,把需要的参数提前计算好就行。

非数学专业,学习RSA算法的时候,看到了这个提及的东西。感觉值得瞅瞅概念,瑞思拜大佬们。

原文链接:https://blog.csdn.net/weixin_46395886/article/details/112988136

还有篇也不错的:https://blog.csdn.net/zgzczzw/article/details/52712980

猜你喜欢

转载自blog.csdn.net/weixin_45264425/article/details/130797331
今日推荐