转载自:https://www.cnblogs.com/lxzbky/p/14178679.html

1.模乘的两种优化

1.蒙哥马利模乘算法

2.Barrett reduction算法

使用算法1需要满足条件,模数N和进制数R互质

当不符合此条件时,使用算法2

这次来记录下第二种算法,防止遗忘

2.先说一下流程

b进制下,求 x mod m,默认大于0

m为k位数(b进制下),x位数小于等于2*k

//b^n代表b的n次幂,mu=b^2k / m,可以预计算
int BaRdc(x){q1 = x / b^(k-1);//右移k-1位,取整,后面同q2 = q1 * mu;q3 = q2 / b^(k+1);//移位r1 = x % b^(k+1);//取低k位,因为mod m,m是k位的,所以只需看低k位即可r2 = (q3 * m) % b^(k+1);//低k位r = r1 - r2;//低k位相减if ( r > m ) r -= m;return r;
}

3.原理说明

mu=[b2km ]mu=[b2km ]
q1=[xbk−1 ]q1=[xbk−1 ]方括号代表取整
q2=q1×muq2=q1×mu
q3=[q2bk+1 ]q3=[q2bk+1 ]
可以得到几个范围
xbk−1−1<q1≤xbk−1xbk−1−1<q1≤xbk−1
b2km−1<mu≤b2kmb2km−1<mu≤b2km 这两个应该很明显
x×bk+1m−b2km−xbk−1+1<q2≤x×bk+1mx×bk+1m−b2km−xbk−1+1<q2≤x×bk+1m 两个范围相乘
xm−bk−1m−xb2k+1bk+1<q3≤xmxm−bk−1m−xb2k+1bk+1<q3≤xm
另外还有两个显然的条件
bk−1m≤1,xb2k≤1bk−1m≤1,xb2k≤1
m在b进制下为k位,x在b进制下不大于2k位
所以进行下放缩,两项放缩一项舍去,xm−2<q3≤xmxm−2<q3≤xm
设d=[x/m]d=[x/m]
q3是整数,很容易观察到,d−1≤q3≤dd−1≤q3≤d
q3应该大概率为d
如果q3=d,xmodm=(x−q3m)modmxmodm=(x−q3m)modm
q3=d-1时再减去一个m即可

Barrett reduction算法相关推荐

  1. 基础算法优化——Fast Modular Multiplication

    1. 引言 Yuval Domb 2022年论文<Fast Modular Multiplication> 模乘可以说是任何密码系统中计算量最大的算术原语.本文提出了一种高效.硬件友好的算 ...

  2. 用c语言实现蒙哥马利算法,蒙哥马利算法的概念与原理 - 全文

    蒙哥马利(Montgomery)幂模运算是快速计算a^b%k的一种算法,是RSA加密算法的核心之一. 蒙哥马利模乘的优点在于减少了取模的次数(在大数的条件下)以及简化了除法的复杂度(在2的k次幂的进制 ...

  3. 蒙哥马利算法(见过的资料中讲的最透彻的)

    转载自:https://blog.csdn.net/zgzczzw/article/details/52712980 这篇文章为大家梳理一下整个蒙哥马利算法的本质,蒙哥马利算法并不是一个独立的算法,而 ...

  4. 大数取模运算,快速幂取模运算

    1.快速幂取模 http://www.cnblogs.com/yinger/archive/2011/06/08/2075043.html 快速幂取模就是在O(logn)内求出a^n mod b的值. ...

  5. 后量子 KEM 方案:Newhope

    参考文献: Lyubashevsky V, Peikert C, Regev O. On ideal lattices and learning with errors over rings[J]. ...

  6. OpenSSL密码库算法笔记——第 2.2.4章 Barrett模数与相关函数

    为了便于使用Barrett约化,专门定义了一个结构体,我们将它称作Barrett模数.结构体的定义如下: struct bn_recp_ctx_st { BIGNUM N; BIGNUM Nr; in ...

  7. Montgomery reduction——多精度模乘法运算算法

    1. modular reduction模简化定义 modular reduction模简化的定义为: 若z为任意整数,则 z mod m 的结果在区间[0, m-1],相当于z除以m的余数,该运算过 ...

  8. sas数据集怎么导出_PCA算法 | 数据集特征数量太多怎么办?用这个算法对它降维打击!...

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第27文章,我们一起来聊聊数据处理领域的降维(dimensionality reduction)算法. 我们都知道,图片 ...

  9. 数据集怎么导出_PCA算法 | 数据集特征数量太多怎么办?用这个算法对它降维打击...

    今天是机器学习专题的第27文章,我们一起来聊聊数据处理领域的降维(dimensionality reduction)算法. 我们都知道,图片格式当中有一种叫做svg,这种格式的图片无论我们将它放大多少 ...

  10. DE、SaDE、JADE、SHADE、L-SHADE算法整理

    DE(Differential Evolution)算法 A. 基本算法原理 DE算法仍然是EA算法的一种,所以在学习DE算法之前,先让我们复习一下EA(Evolution Algorithm)算法的 ...

最新文章

  1. awk5.0 — awk模式之一
  2. 20154312曾林 - Exp1 PC平台逆向破解
  3. 关于解决多台linux服务器间的文件实时同步问题
  4. HDU1716(全排列)
  5. Tomcat——目录结构
  6. 哈工大|NLP数据增强方法?我有15种
  7. python降维之时间类型数据的处理_使用Python进行数据降维|线性降维
  8. Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析(1)
  9. Spring IoC — 基于Java类的配置
  10. Win下JDK的安装和简单使用教程
  11. 三菱fx2n-2ad编程实例_三菱PLC编程实例,PLC控制自动成型机
  12. 用Radeon RAMDisk在Windows 10中创建关机或重新启动不消失的内存虚拟盘
  13. 安利一款倒计时插件---雨滴桌面
  14. msxml3.dll 错误 '80072efd' A connection with the server could not be established
  15. 区块链软件公司:区块链技术三大主要特性的优势
  16. 机器人建模中移动关节如何建立坐标系_解析:四轴机器人和六轴机器人有什么区别?---徕深科技...
  17. 12个球和一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球,13个呢
  18. Java整型变量和整型常量
  19. mycat Mycat监控工具
  20. 解决从光标处插入图片光标消失的问题

热门文章

  1. 腾讯云 DDNS 方案
  2. 阿里云服务器升级openssl1.1.1k 2021-07最新
  3. orcale和mysql跨库查询_ORACLE跨数据库查询的方法
  4. fastp manul page
  5. matlab eps 字体,matlab eps 字体用AI打开乱码的解决
  6. oracle 两表关联查询
  7. 关于Android及iOS打包
  8. 儿童python编程教程-儿童编程python入门
  9. java 自定义泛型方法_Java中自定义泛型方法的使用
  10. 深度学习入门笔记(二十一):经典神经网络(残差网络ResNets)