蒙哥马利算法

本文介绍了蒙哥马利算法,主要用于加速大数运算中的乘模和幂模操作,尤其在RSA加密算法中扮演关键角色。蒙哥马利乘模用于计算(xcdot y (mod N)),而蒙哥马利约减用于计算(tcdot ho^{-1} (mod N)),蒙哥马利幂模则用于计算(x^y (mod N))。算法通过预计算参数和转换运算,将模运算转化为移位操作,提高计算效率。
摘要由CSDN通过智能技术生成

欢迎关注个人公众号摸鱼范式

转载自:

蒙哥马利算法


这篇文章为大家梳理一下整个蒙哥马利算法的本质,蒙哥马利算法并不是一个独立的算法,而是三个相互独立又相互联系的算法集合,其中包括
  • 蒙哥马利乘模,是用来计算\(x\cdot y\ (mod\ N)\)
  • 蒙哥马利约减,是用来计算\(t\cdot \rho^{-1}\ (mod\ N)\)
  • 蒙哥马利幂模,是用来计算\(x^y\ (mod\ N)\)

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

基本概念

梳理几个概念,试想一个集合是整数模N之后得到的\(Z_N=\left\{0,1,2,\cdots,N-1\right\}\)

注:N在base-b进制下有\(l_N\)位。 比如10进制和100进制,都属于base-10进制,因为\(100=10^2\),所以b=10。在10进制下,667的\(l_N=3\)

这样的集合叫做N的剩余类环,任何属于这个集合Z的x满足以下两个条件:

  1. 正整数
  2. 最大长度是\(l_N\)

这篇文章中讲到的蒙哥马利算法就是用来计算基于\(Z_N\)集合上的运算,简单讲一下原因,因为RSA是基于大数运算的,通常是1024bit或2048bit,而我们的计算机不可能存储完整的大数,因为占空间太大,而且也没必要。因此,这种基于大数运算的加密体系在计算的时候都是基于\(Z_N\)集合的,自然,蒙哥马利算法也是基于\(Z_N\)

在剩余类环上,有两种重要的运算,一类是简单运算,也就是加法和减法,另一类复杂运算,也就是乘法。我们比较熟悉的是自然数集上的运算,下面看下怎么从自然数集的运算演变成剩余类环上的运算。

对于加法运算,如果计算\(x\pm y\ (mod\ N)\),\(0\leqslant x,y\),试想自然数集上的 \(x\pm y\)

\[\qquad 0\leqslant x+y\leqslant 2\cdot(N-1) \\ -(N-1)\leqslant x-y\leqslant (N-1) \]

我们可以简单的通过加减N来实现从自然数到剩余类集的转换

另外一类是乘法操作,也就是\(x\cdot y\ (mod\ N)\),\(0\leqslant x,y\),那么

\[0\leqslant x\cdot y\leqslant (N-1)^2 \]

如果在自然数集下,令\(t=x\cdot y\),那么对于\(\mod N\)我们需要计算

\[t-(N\cdot \lfloor\frac{t}{N}\rfloor) \]

加减操作很简单,具体的算这里就不细说了,我们用\(Z_N-ADD\)来代表剩余类环上的加法操作。既然我们可以做加法操作,那么我们就可以扩展到乘法操作,算法如下

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值