[发明专利]一种适用于嵌入式系统的Montgomery模乘计算方法有效
申请号: | 201610609265.0 | 申请日: | 2016-07-28 |
公开(公告)号: | CN107665109B | 公开(公告)日: | 2020-04-14 |
发明(设计)人: | 曾学文;李杨;叶晓舟 | 申请(专利权)人: | 中国科学院声学研究所;北京中科智网科技有限公司 |
主分类号: | G06F7/72 | 分类号: | G06F7/72 |
代理公司: | 北京方安思达知识产权代理有限公司 11472 | 代理人: | 王宇杨;陈琳琳 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 适用于 嵌入式 系统 montgomery 计算方法 | ||
1.一种适用于嵌入式系统的Montgomery模乘计算方法,所述方法包括:多精度乘法和Montgomery约减;对于多精度乘法和Montgomery约减两部分均采用混合扫描的方式进行计算,内部循环使用操作数扫描的方式,外部循环使用乘积扫描的方式;而多精度乘法和Montgomery约减两部分之间使用粗粒度集成的方式,即两部分交替计算;
所述方法具体包括:
步骤1)设大数N是m比特素数,处理器的字长是W比特,则N的字数大小是A,B是两个N剩余类即0<A,B<N;Montgomery系数R=2nW,n0’=-n0-1mod r,n0为N的最低位;选择d,d是内部循环的字数大小;则外部循环的大小是为取大于等于其的最小整数运算;
步骤2)A与B的模乘计算过程为:C=A*B,M=C*n0’mod R,C=(C+M*N)/R;将操作数A、B、M、N、C的每d个字作为一个整体:
E=(E[r-1],…,E[0])=({A[n-1],A[n-2],….,A[n-d]}…{A[d-1],A[2],A[1],A[0]})
F=(F[r-1],…,F[0])=({B[n-1],B[n-2],….,B[n-d]}…{B[d-1],B[2],B[1],B[0]})
G=(G[r-1],…,G[0])=({M[n-1],M[n-2],….,M[n-d]}…{M[d-1],M[2],M[1],M[0]})
H=(H[r-1],…,H[0])=({N[n-1],N[n-2],….,N[n-d]}…{N[d-1],N[2],N[1],N[0]})
Q=(Q[2r-1],Q[2r-3],…,Q[1],Q[0])=({C[2n-1],C[2n-2],C[2n-3],C[2n-d]},…,{C[d-1],C[2],C[1],C[0]})
E、F、G、H和Q均为分块矩阵;
依次计算第q,0≤q≤2r-1列的所有部分乘积:
E[k]*F[l]+G[k]*H[l]=(Q[q+1],Q[q]),
其中k+l=q;直到所有列数计算完成,得到C;k,l为整数;
步骤3)判断C≥N是否成立,如果成立,令C=C-N;转入步骤4),否则,转入步骤4);
步骤4)输出A与B的Montgomery乘积结果C;
所述步骤2)具体包括:
步骤2-1)令q=0;
步骤2-2)将所有满足k+l=q的k,l的集合记为A:A={k,l|k+l=q};
步骤2-3)计算(Q[q+1],Q[q])=∑AE[k]*F[l];
其中,
E[k]*F[l]=(A[kd+3],A[kd+2],A[kd+1],A[kd])*(B[ld+3],B[ld+2],B[ld+1],B[ld]);
步骤2-4)判断q<r是否成立,如果判断结果是肯定,则计算G[q]=Q[q]*n0’;否则,转到步骤2-5);
步骤2-5)计算(Q[q+1],Q[q])=(Q[q+1],Q[q])+∑AG[k]*H[l];
步骤2-6)令q=q+1;若q小于等于2r-2,令k=k+1,返回步骤2-2);否则,转入步骤2-7);
步骤2-7)计算第q列C=C/R,由于R=2nW,所以:
C=(C[2n-1],C[2n-2],…,C[n+1],C[n])。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院声学研究所;北京中科智网科技有限公司,未经中国科学院声学研究所;北京中科智网科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610609265.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种可牵引的网格推车
- 下一篇:一种可防止货品掉落的仓库发货拣选车