[发明专利]一种用于智能卡的Montgomery模乘器的数据处理方法及系统有效
申请号: | 201510006990.4 | 申请日: | 2015-01-07 |
公开(公告)号: | CN104598199B | 公开(公告)日: | 2018-06-01 |
发明(设计)人: | 龚宗跃;王振;顾申 | 申请(专利权)人: | 大唐微电子技术有限公司 |
主分类号: | G06F7/72 | 分类号: | G06F7/72 |
代理公司: | 北京安信方达知识产权代理有限公司 11262 | 代理人: | 李红爽;栗若木 |
地址: | 100094*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种用于智能卡的Montgomery模乘器的数据处理方法及系统,包括:通过4s2+7s次乘法运算获得Montgomery模乘器的运算结果的低位2s个字;采用32x32位的乘法器分别计算出axb和mxn的w位结果;通过4s2‑4s次乘法运算获得Montgomery模乘器的运算结果的高位2s个字;采用32x32位的乘法器分别计算出axb和mxn的w位结果。通过本发明的方案,能够在硬件规模和功耗基本不变的情况下,使算法执行速度大幅提高。 | ||
搜索关键词: | 模乘器 乘法运算 运算结果 数据处理 乘法器 智能卡 算法执行 硬件规模 低位 功耗 | ||
【主权项】:
1.一种用于智能卡的Montgomery模乘器的数据处理方法,其特征在于,所述方法由两个大循环组成,当完成第一个大循环之后,进入第二个大循环,所述两个大循环中分别嵌套一个内循环;包括:所述第一个大循环通过4s2 +7s次乘法运算获得所述Montgomery模乘器的运算结果的低位2s个字;第一个内循环采用32×32位的乘法器分别计算出a×b和m×n的w位结果;所述第二个大循环通过4s2 -4s次乘法运算获得所述Montgomery模乘器的运算结果的高位2s个字;第二个内循环采用32×32位的乘法器分别计算出a×b和m×n的w位结果;其中,a、b、n为2s位的232 进制数;s=k/64,k是要运算的模数的长度,s向上取整;m=t·n’mod r;gcd(n,r)=1,t=a·b,r为2的整数次幂,n’满足r·r-1 -n·n’=1;所述w为64位;a=(a[2s-1],a[2s-2],…,a[1],a[0]);b=(b[2s-1],b[2s-2],…,b[1],b[0]);n=(n[2s-1],n[2s-2],…,n[1],n[0]);m=(m[2s-1],m[2s-2],…,m[1],m[0]);所述采用32×32位的乘法器计算出a×b的w位结果包括以下四个步骤:11、将a[2j]*b[2(i-j)]的结果的低32位和高32位分别存储在中间结果寄存器MOL和MOH中,将中间结果寄存器t1、t0中存储的w位数据分别和MOH、MOL中存储的w位数据相加,其中t1存储所述w位数据的高32位,t0存储所述w位数据的低32位;将相加结果的高32位与低32位分别存储在所述中间结果寄存器t1,t0中;所述相加结果的进位存储在进位保存寄存器C0中;12、将a[2j+1]*b[2(i-j)]的结果的高32位和低32位分别存储在所述中间结果寄存器MOH和MOL中,将中间结果寄存器t2、t1中存储的w位数据分别和所述中间结果寄存器MOH、MOL中存储的w位数据相加,其中t2存储所述w位数据的高32位,t1存储所述w位数据的低32位;将相加结果的高32位与低32位分别存储在所述中间结果寄存器t2、t1中;所述相加结果的进位存储在进位保存寄存器C1中;13、a[2j]*b[2(i-j)+1]的过程与步骤12相同;14、将a[2j+1]*b[2(i-j)+1]的结果的高32位和低32位分别存储在所述中间结果寄存器MOH和MOL中,将中间结果寄存器t3、t2中存储的w位数据分别和所述中间结果寄存器MOH、MOL中存储的w位数据相加获得第一相加结果,其中t3存储所述w位数据的高32位,t2存储所述w位数据的低32位;将所述第一相加结果与进位保存寄存器C0中存储的数据相加获得第二相加结果,将所述第二相加结果的高32位与低32位分别存储在所述中间结果寄存器t3、t2中;两次相加结果的进位存储在进位保存寄存器C2中;其中,i的取值范围为:0到s-1;j的取值范围为:0到i-1;所述MOH、MOL、t3、t2、t1、t0是6个w/2位的所述中间结果寄存器,所述C2、C1分别为不小于log2 (3s)、log2 (4s)位的所述进位保存寄存器,所述C0为1位的所述进位保存寄存器,所述中间结果寄存器与所述进位保存寄存器的初始值均为0;在获得所述Montgomery模乘器的运算结果的高位2s个字的运算过程中,所述i的取值范围为:0到s-1;所述j的取值范围为:i+1到s-1;所述第一个大循环每次需要计算{a[2i+1],a[2i]}×{b[1],b[0]}和{m[2i+1],m[2i]}×{n[1],n[0]},并且计算出下次运算所需的m[2i+1]和m[2i],存储在m的m[2i+1]、m[2i]位置;所述第一个大循环每执行一次运算,运算结果的高w位存储在所述中间结果寄存器t3、t2中,其中,所述t3存储所述高w位中的高32位,所述t2存储所述高w位中的低32位;所述运算结果的低w位存储在所述中间结果寄存器t1、t0中,其中,所述t1存储所述低w位中的高32位,所述t0存储所述低w位中的低32位;所述运算结果的进位存储在所述进位保存寄存器C2中,并且将所述运算结果右移w位;所述第二个大循环每执行一次运算,将所述第二个内循环产生的w位的运算结果保存在数据m的m[2i+1]、m[2i]存储位置,其中m[2i+1]存储所述运算结果的高32位,m[2i]存储所述运算结果的低32位;所述第二个大循环每执行一次运算,运算结果的高w位存储在所述中间结果寄存器t3、t2中,其中,所述t3存储所述高w位中的高32位,所述t2存储所述高w位中的低32位;所述运算结果的低w位存储在所述中间结果寄存器t1、t0中,其中,所述t1存储所述低w位中的高32位,所述t0存储所述低w位中的低32位;所述运算结果的进位存储在所述进位保存寄存器C2中,并且所述运算结果右移w位,并将m[2i+1]、m[2i]存储的w位数据和n[2i+1]、n[2i]存储的w位数据相减,其中,n[2i+1]存储所述w位数据的高32位,n[2i]存储所述w位数据的低32位;将所述相减的结果的高32位存储在b[2i+1]中,低32位存储在b[2i]中,所述相减的结果的借位存储在借位寄存器B中;其中,所述m×n与所述a×b的计算方法相同。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于大唐微电子技术有限公司,未经大唐微电子技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201510006990.4/,转载请声明来源钻瓜专利网。
- 上一篇:指令性能分析的方法和设备
- 下一篇:一种手机网站适配不同终端的方法