蒙哥马利算法简介
来源:互联网 发布:程序员专用笔记本 编辑:程序博客网 时间:2024/04/28 16:03
本文由 @lonelyrains 出品,转载请注明出处。
文章链接: http://blog.csdn.net/lonelyrains/article/details/40428535
原理:
蒙哥马利模乘的优点在于减少了取模的次数(在大数的条件下)以及简化了除法的复杂度(在2的k次幂的进制下除法仅需要进行左移操作)。模幂运算是RSA 的核心算法,最直接地决定了RSA 算法的性能。
针对快速模幂运算这一课题,西方现代数学家提出了大量的解决方案,通常都是先将幂模运算转化为乘模运算。
例如求D=C^15%N
由于:a*b % n = (a % n)*(b % n) % n
所以令:
C1 =C*C % N =C^2 % N
C2 =C1*C % N =C^3 % N
C3 =C2*C2 % N =C^6 % N
C4 =C3*C % N =C^7 % N
C5 =C4*C4 % N =C^14 % N
C6 =C5*C % N =C^15 % N
即:对于E=15的幂模运算可分解为6 个乘模运算,归纳分析以上方法可以发现:
对于任意指数E,都可采用以下算法计算D=C**E % N:
D=1
WHILE E>0
IF E%2=0
C=C*C % N
E=E/2
ELSE
D=D*C % N
E=E-1
RETURN D
继续分析会发现,要知道E 何时能整除 2,并不需要反复进行减一或除二的操作,只需验证E 的二进制各位是0 还是1 就可以了,从左至右或从右至左验证都可以,从左至右会更简洁,
设E=Sum[i=0 to n](E*2**i),0<=E<=1
则:
D=1
FOR i=n TO 0
D=D*D % N
IF E=1
D=D*C % N
RETURN D这样,模幂运算就转化成了一系列的模乘运算。
代码Hint Hint::pow_mod(Hint pow,Hint mod)const{ Hint r=(*this)%mod; Hint p=pow; Hint m=mod; Hint k=1; while(!( p.weishu==1 && *p.c == 0 )) { if( p.odd()) k = ((k%m) * (r%m)) % m; r = ((r%m) * (r%m)) % m; p>>1; } return k;}
0 0
- 蒙哥马利算法简介
- 蒙哥马利(Montgomery)算法简介
- 蒙哥马利(Montgomery)算法简介
- 蒙哥马利(Montgomery)算法简介
- Montgomery蒙哥马利算法
- 蒙哥马利算法详解
- 蒙哥马利快速幂摸算法
- RSA算法实现与蒙哥马利算法
- RSA算法实现与蒙哥马利算法(转)
- RSA算法实现与蒙哥马利算法(转)
- 蒙哥马利
- 费马小定理 素数判定 蒙哥马利算法
- 费马小定理 素数判定 蒙哥马利算法
- 费马小定理 素数判定 蒙哥马利算法
- 费马小定理 素数判定 蒙哥马利算法
- 算法与数据结构-数论之蒙哥马利模乘
- 费马小定理 素数判定 蒙哥马利算法
- HDU 1420 蒙哥马利幂模算法
- adfasdf
- Create a Bootable Version of the OS X Mavericks Installer on a USB Flash Drive
- 经纬度计算两地之间的距离(原理与方法)
- (十四)洞悉linux下的Netfilter&iptables:开发一个match模块【实战】
- eclipse jsp html 格式化 format java 格式化文档快捷键
- 蒙哥马利算法简介
- lua table用法
- (十五)洞悉linux下的Netfilter&iptables:开发自己的hook函数【实战】(上)
- 如何设置tomcat的默认应用
- (十六)洞悉linux下的Netfilter&iptables:开发自己的hook函数【实战】(下)
- PHPnow中配置文件的位置
- 设计模式(九)访问者模式
- 如何在RHEL6.5中配置光盘中的数据位本地YUM源
- 转载iphone开发学习笔记