蒙哥马利java算法_算法详解 - 蒙哥马利算法的概念与原理

算法的详解

扯了一大顿,终于引出了今天文章的主角,前面讲到的两个算法,第一个就是蒙哥马利乘模,第二个就是蒙哥马利约减。下面我们来讲这两个算法的详解。

正如前面提到的蒙哥马利算法的三个特性之一是,不是基于普通的整数表示法,而是基于蒙哥马利表示法。什么是蒙哥马利表示法呢,其实也很简单,上面我们提到,要让(x1⋅y1) (mod 667)转变成(x2⋅y2)/1000 (mod 667)这种形式,我们需要将输入参数变成(x⋅1000)和(y⋅1000),而不是x和y本身,而(x⋅1000)和(y⋅1000) 其实就是蒙哥马利表示法。

所以我们先定义几个概念:

蒙哥马利参数

给定一个N,N在b进制(例如,二进制时,b=2)下共有l位,gcd(N,b)=1,先预计算以下几个值(这就是前面提到的特性之一,需要预计算):

ρ=bk 指定一个最小的k,使得bk》N

ω=−N−1(mod ρ)

这两个参数是做什么用的呢,你对照前面的演变过程可以猜到ρ 就是前面演变中的1000,而ω 则是用来计算前面提到的u的。

蒙哥马利表示法

对于x,0≤x≤N−1,x的蒙哥马利表示法表示为x=x⋅ρ (mod N)

蒙哥马利约减

蒙哥马利约减的定义如下

给定一些整数t,蒙哥马利约减的计算结果是t⋅ρ−1 (mod N)

蒙哥马利约减的算法可表示为

42792320f9663d89f654b7b1348d6cc6.png

蒙哥马利约减可以算作是下面要说的蒙哥马利模乘当x=1时的一种特殊形式,。同时它又是蒙哥马利乘模要用到的一部分,这在下一部分讲蒙哥马利乘模的时候有讲到。

蒙哥马利约减可以用来计算某个值得取模操作,比如我们要计算m(mod N),只需要将m

的蒙哥马利表示法m⋅ρ作为参数,带入蒙哥马利约减,则计算结果就是m(mod N)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值