[发明专利]应用在密码技术中的大整数乘法运算方法及装置有效
申请号: | 201410150320.5 | 申请日: | 2014-04-15 |
公开(公告)号: | CN103942028B | 公开(公告)日: | 2017-04-05 |
发明(设计)人: | 郑昉昱;荆继武;潘无穷;林璟锵;赵原 | 申请(专利权)人: | 中国科学院数据与通信保护研究教育中心 |
主分类号: | G06F7/537 | 分类号: | G06F7/537 |
代理公司: | 北京德琦知识产权代理有限公司11018 | 代理人: | 牛峥,王丽琴 |
地址: | 100093 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 应用 密码 技术 中的 整数 乘法 运算 方法 装置 | ||
1.一种应用在密码技术中的大整数乘法运算方法,其特征在于,包括:
设置两个乘数a,b的长度为w比特,一个加数c的长度为w比特,计算前标志寄存器的进位标志为carry_in,结果d的长度为w比特,计算完成后标志寄存器的进位标志为carry_out,高低位分离的带进位的运算指令表示为
(d,carry_out)=(a×b)h+c+carry_in
(d,carry_out)=(a×b)l+c+carry_in
其中(a×b)h表示a×b的高w比特,(a×b)l表示a×b的低w比特;
将位宽w比特定义为一个字,定义以下符号:A[0:s](s≥0)表示A的第0个字到第s个字,A[u]表示A的第u个字;将长度为Nw比特的被乘数A表示为A[0:N-1],其中A[0]是A的最低位w比特、A[N-1]是A的最高位w比特;类似地,将Mw比特的乘数B和(M+N)w比特的乘积C表示为B[0:M-1]和C[0:M+N-1];
计算C[0:M+N-1]=A[0:N-1]×B[0:M-1](N≥M)时,利用运算(C[p],carry)=(A[p-k]×B[k])l+C[p]+carry(p-k≥0)或(C[p],carry)=(A[p-k-1]×B[k])h+C[p]+carry(p-k-1≥0)累积结果到C[p](0≤p≤M+N-1)中直到产生结果,其中carry为前一次计算累积结果C[p-1]产生的进位。
2.如权利要求1所述的大整数乘法运算方法,其特征在于,所述A[0:N-1]和B[0:M-1]不同,分M轮计算;
其中第0轮累积结果的过程为:
首先,从j=0到N-1,依次选择计算C[j]=(A[j]×B[0])l
或C[j]=(A[j-1]×B[0])h(j≥1时选取)中的其中之一;
N次计算完成后,置carry为0,从j=0到N-2,依次选择计算
(C[j+1],carry)=(A[j+1]×B[0])l+C[j+1]+carry
(j+1≤N-1时选取)
或(C[j+1],carry)=(A[j]×B[0])h+C[j+1]+carry的其中之一,选择时保证被选中的(A[j+1]×B[0])l或(A[j]×B[0])h未参与过运算;
N-1次计算完成后,取最后一次计算产生的carry,计算
C[N]=(A[N-1]×B[0])h+carry,
其中第i轮(1≤i≤M-1)累积结果的过程为:
首先,carry置0,从j=0到N-1依次选择计算
(C[i+j],carry)=(A[j]×B[i])l+C[i+j]+carry或(C[i+j],carry)=(A[j-1]×B[i])h+C[i+j]+carry(j≥1时选取)的其中之一;
N次计算完成后,取最后一次计算产生的carry,计算
C[j+N]=carry
然后,carry置0,从j=0到N-1依次累加
(C[i+j+1],carry)=(A[j+1]×B[i])l+C[i+j+1]+carry(j+1≤N-1时选取);
或(C[i+j+1],carry)=(A[j]×B[i])h+C[i+j+1]+carry的其中之一,选取时保证被选中的(A[j+1]×B[0])l或(A[j]×B[0])h之前未参与过运算;
M轮计算完毕后,对于任意s,t(0≤s≤N-1,0≤t≤M-1),(A[s]×B[t])l和(A[s]×B[t])h必须各参与过一次运算。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院数据与通信保护研究教育中心,未经中国科学院数据与通信保护研究教育中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410150320.5/1.html,转载请声明来源钻瓜专利网。