OpenSSL密码库算法笔记——第2.2.2章 Barrett约化的优越性

现在简单的将经典运算和Barrett约化做下对比。经典模运算就是做长除法,而Barrett约化与经典模运算不同。

经典模运算 = 除法。

Barrett约化 = 2次特殊的除法 + 2次较特殊的乘法 + 1次可预先完成的除法。

Barrett约化中的2次特殊的除法\left \lfloor x/B^{2k-t} \right \rfloor(和除以B^t,见(2.3)式)非常特殊——除数是基数B的方幂,这种除法可以用右移来代替,所耗费的时间可忽略不计。而2次乘法(,见(2.3)式和(2.5)式)的特殊性在于被乘数或者乘数的某一部分为零,这样就只需要做其中某一部分字的乘法,减少了计算量。对需要预先计算的那一次除法(\left \lfloor B^{2k}/m \right \rfloor,见(2.3)式)而言,因为被除数为常数B^{2k}而除数为模数m,所以只要模数不变,那么做一百万次模运算和做一次模运算一样都只需要做一次预运算。这些便是Barrett约化的优越性。

猜你喜欢

转载自blog.csdn.net/samsho2/article/details/86640421