OpenSSL密码库算法笔记——第2.4章 三种模运算的比较

现在来比较一下上面介绍的三中模运算——经典模运算、Barrett约化和Montgomery约化。

因为在绝大多数情况下被模数x的字长l为模数m的字长k的2倍,所以以下按照这种常见情况来进行比较。下面提到的乘法次数是指需要做多少次字与字的乘法,类似地,除法次数就是指需要做多少次两个字除以一个字的除法。表中给出的乘除法数没有包括预运算和事后处理运算。

经典模运算

Barrett约化

Montgomery约化

乘法次数

k(k+2.5)

k(k+4)

k(k+1)

除法次数

k

0

0

使用限制

预运算

标准化

事后处理

去标准化

去掉R

表2.1      三种模运算的比较(l=2k)

从上表可以看出,在不考虑预运算和事后处理的情况下,Barrett约化和Montgomery约化更好一些。如果把预运算和事后处理也一起考虑进去的话,那就得分具体环境了。比如在做模指数运算时,需要多次模运算,所以此时使用Barrett约化和Montgomery约化比使用经典模运算更好一些,进一步,使用Montgomery约化的模指数运算应该是最优的,不过,Montgomery约化必需满足基本条件gcd(R,m)=1。但是若只需要做一次模运算的话,那么经典模运算应该是最佳的选择,因为其预运算和事后处理简单快捷(只是做简单的左移和右移)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值