CN109947393B - 基于求余器的运算方法及装置 - Google Patents
基于求余器的运算方法及装置 Download PDFInfo
- Publication number
- CN109947393B CN109947393B CN201711386984.1A CN201711386984A CN109947393B CN 109947393 B CN109947393 B CN 109947393B CN 201711386984 A CN201711386984 A CN 201711386984A CN 109947393 B CN109947393 B CN 109947393B
- Authority
- CN
- China
- Prior art keywords
- adder
- sum
- multiplier
- calling
- accumulator
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Abstract
本发明公开了一种基于求余器的运算方法及装置,该方法包括:获取第一乘数与第二乘数后,调用所述乘法器计算所述第一乘数与所述第二乘数的乘积;分别调用所述第一加法器、所述第二加法器、所述第三加法器和所述第四加法器计算所述乘积与对应的设定值的和值;调用所述选择器根据四个和值从所述第一加法器、所述第二加法器、所述第三加法器和所述第四加法器中选出选定加法器;根据所述选定加法器对应的和值和所述存储器中保存的最大值确定所述乘积对应的部分余数。该方案相对于现有技术,求余器的运算压力大大减小,运算效率大大提高,功耗大大降低。
Description
技术领域
本发明涉及计算机技术领域,尤指一种基于求余器的运算方法及装置。
背景技术
随着计算机运算速度的迅速提高和Internet分布式计算能力的日益强大,经典的RSA公钥密码体制在密钥长度为1024比特下已经越来越不安全。目前为了保证用户的安全,增加RSA密钥长度是必然趋势。但是随着密钥长度从1024比特向2048比特,甚至4096比特方向发展的过程中,安全系统能增加其固有的安全性,但是加解密效率会越来越低,同时对计算机系统的要求也会提高。为此,需要具有更高执行效率的RSA硬件系统来提高加解密系统的效率。
而在RSA加密算法中,求余器是硬件算法设计的重中之重,只要提高了求余器的执行效率就可极大提高RSA算法的效率。目前的基于求余器的运算方法中,乘数每次乘2后得到的乘积都要与模进行比较,如果小于模,则会继续乘2,如果大于模,则求出乘积与模的余数,从而得到加密的密码。该运算方法在密钥长度越来越长的情况下,求余器的运算压力非常大,运算效率很低,功耗很大。
发明内容
本发明实施例提供一种基于求余器的运算方法及装置,用以解决现有技术中存在的运算压力非常大,运算效率很低,功耗很大的问题。
根据本发明实施例,提供一种基于求余器的运算方法,所述求余器包括乘法器、第一加法器、第二加法器、第三加法器、第四加法器、存储器和选择器,所述方法包括:
获取第一乘数与第二乘数后,调用所述乘法器计算所述第一乘数与所述第二乘数的乘积;
分别调用所述第一加法器、所述第二加法器、所述第三加法器和所述第四加法器计算所述乘积与对应的设定值的和值;
调用所述选择器根据四个和值从所述第一加法器、所述第二加法器、所述第三加法器和所述第四加法器中选出选定加法器;
根据所述选定加法器对应的和值和所述存储器中保存的最大值确定所述乘积对应的部分余数。
可选的,所述求余器还包括模寄存器、和累加器,所述方法包括:
根据所述第一乘数的位数逐次调用所述累加器累加所述模寄存器中的模;
将得到的各个累加值保存在所述存储器中。
具体的,根据所述第一乘数的位数逐次调用所述累加器累加所述模寄存器中的模,具体包括:
调用所述累加器将所述模寄存器中的模与所述累加器中的数值相加;
将得到的结果保存在所述存储器中;
将累加次数加1后,确定所述累加次数的数值是否小于所述第一乘数的位数对应的最大值;
若确定所述累加次数的数值小于所述第一乘数的位数对应的最大值,则执行所述调用所述累加器将所述模寄存器中的模与所述累加器中的数值相加的步骤;
若确定所述累加次数的数值等于所述第一乘数的位数对应的最大值,则停止调用所述累加器。
具体的,若所述第一加法器、所述第二加法器、所述第三加法器和所述第四加法器中后一个加法器对应的设定值比前一个加法器对应的设定值小于设定倍数的所述模寄存器中的模,则调用所述选择器根据四个和值从所述第一加法器、所述第二加法器、所述第三加法器和所述第四加法器中选出选定加法器,具体包括:
调用所述选择器确定所述第一加法器的和值、所述第二加法器的和值、所述第三加法器的和值和所述第四加法器的和值是否为正数;
若所述第一加法器的和值为正数,所述第二加法器的和值、所述第三加法器的和值和所述第四加法器的和值为负数,则确定所述第一加法器为选定加法器;
若所述第一加法器的和值和所述第二加法器的和值为正数,所述第三加法器的和值和所述第四加法器的的和值为负数,则确定所述第二加法器为选定加法器;
若所述第一加法器的和值、所述第二加法器的和值和所述第三加法器的和值为正数,所述第四加法器的的和值为负数,则确定所述第三加法器为选定加法器;
若所述第一加法器的和值、所述第二加法器的和值、所述第三加法器的和值和所述第四加法器的的和值均为正数,则确定所述第四加法器为选定加法器。
具体的,根据所述选定加法器对应的和值和所述存储器中保存的最大值确定所述乘积对应的部分余数,具体包括:
获取所述存储器中保存的最大值的相反数;
调用所述选定加法器将所述选定加法器的和值与所述相反数相加,得到所述乘积对应的部分余数。
根据本发明实施例,还提供一种基于求余器的运算装置,所述求余器包括乘法器、第一加法器、第二加法器、第三加法器、第四加法器、模寄存器、累加器、存储器和选择器,所述装置包括:
第一调用模块,用于获取第一乘数与第二乘数后,调用所述乘法器计算所述第一乘数与所述第二乘数的乘积;
第二调用模块,用于分别调用所述第一加法器、所述第二加法器、所述第三加法器和所述第四加法器计算所述乘积与对应的设定值的和值;
第三调用模块,用于调用所述选择器根据四个和值从所述第一加法器、所述第二加法器、所述第三加法器和所述第四加法器中选出选定加法器;
确定模块,用于根据所述选定加法器对应的和值和所述存储器中保存的最大值确定所述乘积对应的部分余数。
可选的,所述求余器还包括模寄存器、和累加器,所述方法包括累加模块,用于:
根据所述第一乘数的位数逐次调用所述累加器累加所述模寄存器中的模;
将得到的各个累加值保存在所述存储器中。
具体的,所述累加模块,具体用于:
调用所述累加器将所述模寄存器中的模与所述累加器中的数值相加;
将得到的结果保存在所述存储器中;
将累加次数加1后,确定所述累加次数的数值是否小于所述第一乘数的位数对应的最大值;
若确定所述累加次数的数值小于所述第一乘数的位数对应的最大值,则执行所述调用所述累加器将所述模寄存器中的模与所述累加器中的数值相加的步骤;
若确定所述累加次数的数值等于所述第一乘数的位数对应的最大值,则停止调用所述累加器。
具体的,若所述第一加法器、所述第二加法器、所述第三加法器和所述第四加法器中后一个加法器对应的设定值比前一个加法器对应的设定值小于设定倍数的所述模寄存器中的模,则所述第三调用模块,具体用于:
调用所述选择器确定所述第一加法器的和值、所述第二加法器的和值、所述第三加法器的和值和所述第四加法器的和值是否为正数;
若所述第一加法器的和值为正数,所述第二加法器的和值、所述第三加法器的和值和所述第四加法器的和值为负数,则确定所述第一加法器为选定加法器;
若所述第一加法器的和值和所述第二加法器的和值为正数,所述第三加法器的和值和所述第四加法器的的和值为负数,则确定所述第二加法器为选定加法器;
若所述第一加法器的和值、所述第二加法器的和值和所述第三加法器的和值为正数,所述第四加法器的的和值为负数,则确定所述第三加法器为选定加法器;
若所述第一加法器的和值、所述第二加法器的和值、所述第三加法器的和值和所述第四加法器的的和值均为正数,则确定所述第四加法器为选定加法器。
具体的,所述确定模块,具体用于:
获取所述存储器中保存的最大值的相反数;
调用所述选定加法器将所述选定加法器的和值与所述相反数相加,得到所述乘积对应的部分余数。
本发明有益效果如下:
本发明实施例提供一种基于求余器的运算方法及装置,通过获取第一乘数与第二乘数后,调用所述乘法器计算所述第一乘数与所述第二乘数的乘积;分别调用所述第一加法器、所述第二加法器、所述第三加法器和所述第四加法器计算所述乘积与对应的设定值的和值;调用所述选择器根据四个和值从所述第一加法器、所述第二加法器、所述第三加法器和所述第四加法器中选出选定加法器;根据所述选定加法器对应的和值和所述存储器中保存的最大值确定所述乘积对应的部分余数。该方案中,针对第一乘数与第二乘数,通过调用乘法器、第一加法器、第二加法器、第三加法器、第四加法器、选择器和存储器,从四个加法器中选出一个选定加法器,然后基于该选定加法器可以快速求出部分余数,相对于现有技术,求余器的运算压力大大减小,运算效率大大提高,功耗大大降低。
附图说明
图1为本发明实施例中一种基于求余器的运算方法的流程图;
图2为本发明实施例中一种基于求余器的运算装置的结构示意图。
具体实施方式
针对现有技术中存在的运算压力非常大,运算效率很低,功耗很大的问题,本发明实施例提供一种基于求余器的运算方法,求余器包括乘法器、第一加法器、第二加法器、第三加法器、第四加法器、存储器和选择器,该方法的流程如图1所示,执行步骤如下:
S11:获取第一乘数与第二乘数后,调用乘法器计算第一乘数与第二乘数的乘积。
在RSA加密算法中,需要将两个乘数相乘,其中一个乘数定义为第一乘数,另一个乘数可以定义为第二乘数,在求这两个乘数的乘积的时候可以调用乘法器进行计算。
S12:分别调用第一加法器、第二加法器、第三加法器和第四加法器计算乘积与对应的设定值的和值。
各个加法器对应的设定值可以预先设定。
S13:调用选择器根据四个和值从第一加法器、第二加法器、第三加法器和第四加法器中选出选定加法器。
由于有四个加法器,就会有四个计算结果,最终求取的余数只有一个,因此,可以调用选择器从中选取一个得到选定加法器。
S14:根据选定加法器对应的和值和存储器中保存的最大值确定乘积对应的部分余数。
其中,存储器可以但不限于为随机存取存储器(Random-Access Memory,RAM)。
该方案中,针对第一乘数与第二乘数,通过调用乘法器、第一加法器、第二加法器、第三加法器、第四加法器、选择器和存储器,从四个加法器中选出一个选定加法器,然后基于该选定加法器可以快速求出部分余数,相对于现有技术,求余器的运算压力大大减小,运算效率大大提高,功耗大大降低。
以上介绍了基于求余器的运算方法,目前存在二进制、十进制等等运算原则,上述方法可以适用于各种运算原则,下面以二进制为例介绍该方法。
可选的,求余器还包括模寄存器、和累加器,方法包括:根据第一乘数的位数逐次调用累加器累加模寄存器中的模;将得到的各个累加值保存在存储器中。
具体的,上述根据第一乘数的位数逐次调用累加器累加模寄存器中的模,实现过程具体包括:调用累加器将模寄存器中的模与累加器中的数值相加;将得到的结果保存在存储器中;将累加次数加1后,确定累加次数的数值是否小于第一乘数的位数对应的最大值;若确定累加次数的数值小于第一乘数的位数对应的最大值,则执行调用累加器将模寄存器中的模与累加器中的数值相加的步骤;若确定累加次数的数值等于第一乘数的位数对应的最大值,则停止调用累加器。
RAM内缓存的数值是模N的整数倍,当模N的数值通过数值总线传到累加器时,累加器将当前的数值累加上N,得到的结果保存在RAM中,若第一乘数的位数6比特,则最多累加63次,累加器中最大的值为63N。
由上可知,RAM缓存的每个数值一定大于2t+1-N-1,t为第一乘数的位数。论证如下:如果RAM缓存的数值小于2t+1-N-1,则下一次累加值必定小于2t+1-1,即该值的溢出比特位不会变化,则第k次数值更新为新值,由于N的最高位2t为1,且其它位必有不为零的数值,因此该值一定大于2t+1-N-1。
任何一个质数N值,其二进制数均可表示为N=[nt-1nt-2…n1n0],其中nt为N的取值为1的最高位。由于2t-1nt-1+2t-2nt-2+…+2n1+n0的最大值为2t-1,因此,若N的最高位为t,则N一定小于2t+1。
现在来分析求余器的运算情况:若乘法器乘积的最高位为2t+1,则乘法器乘积的取值范围为[2t+2-1,2t+1]。RAM缓存的第一个数值的范围为[2t+1-1,2t+1-N-1],乘法器的乘积减第一个数值的取值范围为[2t+2-2t+1+N,0],即求余器余数的位数为t+1位:2t+2=2×2t+1,上式可变形为:2t+2-2t+1+N=2t+1+N。由于N的最高位2t为1,且其它位必有不为零的数值,因此N<2t+1<2N。由此可知,求余器的差值[2t+2-2t+1+N,0],其结果只有三种情况:余数、余数加N、余数加2N。
假设,MUL为乘法器的输出值,ADD为选择器的输出值,RAM[ADDR]为RAM的输出值,乘法器完成6比特数值和2048比特数值的乘积,且2048比特数值小于N,乘法器的乘积s的取值范围为:0≤s≤63N。根据以上推到可以得到:
其中0≤P<N,由此可得0≤s+64P≤127N,0≤s+64P+64N≤191N,0≤s+64P+128N≤255N。为了使加法器的输出值小于63N,因此,可以确定第一加法器对应的设定数值为0,第二加法器对应的设定数值为-64N,第三加法器对应的设定数值为-128N,第四加法器对应的设定数值为-192N。
具体的,若第一加法器、第二加法器、第三加法器和第四加法器中后一个加法器对应的设定值比前一个加法器对应的设定值小于设定倍数的模寄存器中的模,则S13中调用选择器根据四个和值从第一加法器、第二加法器、第三加法器和第四加法器中选出选定加法器,实现过程具体包括:
调用选择器确定第一加法器的和值、第二加法器的和值、第三加法器的和值和第四加法器的和值是否为正数;
若第一加法器的和值为正数,第二加法器的和值、第三加法器的和值和第四加法器的和值为负数,则确定第一加法器为选定加法器;
若第一加法器的和值和第二加法器的和值为正数,第三加法器的和值和第四加法器的的和值为负数,则确定第二加法器为选定加法器;
若第一加法器的和值、第二加法器的和值和第三加法器的和值为正数,第四加法器的的和值为负数,则确定第三加法器为选定加法器;
若第一加法器的和值、第二加法器的和值、第三加法器的和值和第四加法器的的和值均为正数,则确定第四加法器为选定加法器。
当加法器结果s<64N,加法器一的输出结果符号位为正,其它三个加法器的符号位为负,输出结果小于64N;当64N≤s<128N时,加法器一、二的输出结果符号位为正,其它两个加法器的符号位为负,加法器二的输出结果小于64N;当128N≤s<192N时,加法器一、二、三的输出结果符号位为正,加法器四的符号位为负,加法器三的输出结果小于64N;当192N≤s<256N时,加法器一、二、三、四的输出结果符号位为正,加法器四的输出结果小于64N。加法器逻辑控制选择单元根据四个加法器输出符号位,可以方便的从四个输出中选出正确的数值,且数值一定小于64N,满足RAM缓存的数值范围。
具体的,S14中根据选定加法器对应的和值和存储器中保存的最大值确定乘积对应的部分余数,实现过程具体包括:获取存储器中保存的最大值的相反数;调用选定加法器将选定加法器的和值与相反数相加,得到乘积对应的部分余数。由于从四个加法器中选出选定加法器,可以基于该选定加法器来确定最后的部分余数。
通过该方案一个时钟周期可实现6×2048比特的乘-累加-求部分余数操作。完成一次2048×2048运算,只需342个时钟周期。2048位RSA加密算法,最多需要683次2048×2048运算,共需233586个时钟周期。对于200M主时钟系统来说约需1.2ms,一秒可实现832次加解密运算。同时该实现方案RAM模块的数值比传统的RAM块小一倍,极大的降低了FPGA的规模,降低的硬件模块的功耗,提高了求余器的稳定性和可靠性。
基于同一发明构思,本发明实施例提供一种基于求余器的运算装置,求余器包括乘法器、第一加法器、第二加法器、第三加法器、第四加法器、模寄存器、累加器、存储器和选择器,该装置的结构如图2所示,包括:
第一调用模块21,用于获取第一乘数与第二乘数后,调用乘法器计算第一乘数与第二乘数的乘积;
第二调用模块22,用于分别调用第一加法器、第二加法器、第三加法器和第四加法器计算乘积与对应的设定值的和值;
第三调用模块23,用于调用选择器根据四个和值从第一加法器、第二加法器、第三加法器和第四加法器中选出选定加法器;
确定模块24,用于根据选定加法器对应的和值和存储器中保存的最大值确定乘积对应的部分余数。
该方案中,针对第一乘数与第二乘数,通过调用乘法器、第一加法器、第二加法器、第三加法器、第四加法器、选择器和存储器,从四个加法器中选出一个选定加法器,然后基于该选定加法器可以快速求出部分余数,相对于现有技术,求余器的运算压力大大减小,运算效率大大提高,功耗大大降低。
可选的,求余器还包括模寄存器、和累加器,方法包括累加模块,用于:
根据第一乘数的位数逐次调用累加器累加模寄存器中的模;
将得到的各个累加值保存在存储器中。
具体的,累加模块,具体用于:
调用累加器将模寄存器中的模与累加器中的数值相加;
将得到的结果保存在存储器中;
将累加次数加1后,确定累加次数的数值是否小于第一乘数的位数对应的最大值;
若确定累加次数的数值小于第一乘数的位数对应的最大值,则执行调用累加器将模寄存器中的模与累加器中的数值相加的步骤;
若确定累加次数的数值等于第一乘数的位数对应的最大值,则停止调用累加器。
具体的,若第一加法器、第二加法器、第三加法器和第四加法器中后一个加法器对应的设定值比前一个加法器对应的设定值小于设定倍数的模寄存器中的模,则第三调用模块23,具体用于:
调用选择器确定第一加法器的和值、第二加法器的和值、第三加法器的和值和第四加法器的和值是否为正数;
若第一加法器的和值为正数,第二加法器的和值、第三加法器的和值和第四加法器的和值为负数,则确定第一加法器为选定加法器;
若第一加法器的和值和第二加法器的和值为正数,第三加法器的和值和第四加法器的的和值为负数,则确定第二加法器为选定加法器;
若第一加法器的和值、第二加法器的和值和第三加法器的和值为正数,第四加法器的的和值为负数,则确定第三加法器为选定加法器;
若第一加法器的和值、第二加法器的和值、第三加法器的和值和第四加法器的的和值均为正数,则确定第四加法器为选定加法器。
具体的,确定模块24,具体用于:
获取存储器中保存的最大值的相反数;
调用选定加法器将选定加法器的和值与相反数相加,得到乘积对应的部分余数。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的可选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括可选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1.一种基于求余器的运算方法,其特征在于,所述求余器包括乘法器、第一加法器、第二加法器、第三加法器、第四加法器、存储器、模寄存器和选择器,所述方法包括:
获取第一乘数与第二乘数后,调用所述乘法器计算所述第一乘数与所述第二乘数的乘积;
分别调用所述第一加法器、所述第二加法器、所述第三加法器和所述第四加法器计算所述乘积与对应的设定值的和值;
所述设定值,为:后一个加法器对应的设定值比前一个加法器对应的设定值小于设定倍数的所述模寄存器中的模;
调用所述选择器根据四个和值从所述第一加法器、所述第二加法器、所述第三加法器和所述第四加法器中选出选定加法器;
选出选定加法器的过程中,若所述第一加法器、所述第二加法器、所述第三加法器和所述第四加法器中后一个加法器对应的设定值比前一个加法器对应的设定值小于设定倍数的所述模寄存器中的模,则调用所述选择器根据四个和值从所述第一加法器、所述第二加法器、所述第三加法器和所述第四加法器中选出选定加法器,具体包括:
调用所述选择器确定所述第一加法器的和值、所述第二加法器的和值、所述第三加法器的和值和所述第四加法器的和值是否为正数;
若所述第一加法器的和值为正数,所述第二加法器的和值、所述第三加法器的和值和所述第四加法器的和值为负数,则确定所述第一加法器为选定加法器;
若所述第一加法器的和值和所述第二加法器的和值为正数,所述第三加法器的和值和所述第四加法器的和值为负数,则确定所述第二加法器为选定加法器;
若所述第一加法器的和值、所述第二加法器的和值和所述第三加法器的和值为正数,所述第四加法器的和值为负数,则确定所述第三加法器为选定加法器;
若所述第一加法器的和值、所述第二加法器的和值、所述第三加法器的和值和所述第四加法器的和值均为正数,则确定所述第四加法器为选定加法器;
根据所述选定加法器对应的和值和所述存储器中保存的最大值确定所述乘积对应的部分余数。
2.如权利要求1所述的方法,其特征在于,所述求余器还包括累加器,所述方法包括:
根据所述第一乘数的位数逐次调用所述累加器累加所述模寄存器中的模;
将得到的各个累加值保存在所述存储器中。
3.如权利要求2所述的方法,其特征在于,根据所述第一乘数的位数逐次调用所述累加器累加所述模寄存器中的模,具体包括:
调用所述累加器将所述模寄存器中的模与所述累加器中的数值相加;将得到的结果保存在所述存储器中;
将累加次数加1后,确定所述累加次数的数值是否小于所述第一乘数的位数对应的最大值;
若确定所述累加次数的数值小于所述第一乘数的位数对应的最大值,则执行所述调用所述累加器将所述模寄存器中的模与所述累加器中的数值相加的步骤;
若确定所述累加次数的数值等于所述第一乘数的位数对应的最大值,则停止调用所述累加器。
4.如权利要求1-3任一所述的方法,其特征在于,根据所述选定加法器对应的和值和所述存储器中保存的最大值确定所述乘积对应的部分余数,具体包括:
获取所述存储器中保存的最大值的相反数;
调用所述选定加法器将所述选定加法器的和值与所述相反数相加,得到所述乘积对应的部分余数。
5.一种基于求余器的运算装置,其特征在于,所述求余器包括乘法器、第一加法器、第二加法器、第三加法器、第四加法器、模寄存器、累加器、存储器和选择器,所述装置包括:
第一调用模块,用于获取第一乘数与第二乘数后,调用所述乘法器计算所述第一乘数与所述第二乘数的乘积;
第二调用模块,用于分别调用所述第一加法器、所述第二加法器、所述第三加法器和所述第四加法器计算所述乘积与对应的设定值的和值;
所述设定值,为:后一个加法器对应的设定值比前一个加法器对应的设定值小于设定倍数的所述模寄存器中的模;
第三调用模块,用于调用所述选择器根据四个和值从所述第一加法器、所述第二加法器、所述第三加法器和所述第四加法器中选出选定加法器;
选出选定加法器的过程中,若所述第一加法器、所述第二加法器、所述第三加法器和所述第四加法器中后一个加法器对应的设定值比前一个加法器对应的设定值小于设定倍数的所述模寄存器中的模,则调用所述选择器根据四个和值从所述第一加法器、所述第二加法器、所述第三加法器和所述第四加法器中选出选定加法器,具体包括:
调用所述选择器确定所述第一加法器的和值、所述第二加法器的和值、所述第三加法器的和值和所述第四加法器的和值是否为正数;
若所述第一加法器的和值为正数,所述第二加法器的和值、所述第三加法器的和值和所述第四加法器的和值为负数,则确定所述第一加法器为选定加法器;
若所述第一加法器的和值和所述第二加法器的和值为正数,所述第三加法器的和值和所述第四加法器的和值为负数,则确定所述第二加法器为选定加法器;
若所述第一加法器的和值、所述第二加法器的和值和所述第三加法器的和值为正数,所述第四加法器的和值为负数,则确定所述第三加法器为选定加法器;
若所述第一加法器的和值、所述第二加法器的和值、所述第三加法器的和值和所述第四加法器的和值均为正数,则确定所述第四加法器为选定加法器;
确定模块,用于根据所述选定加法器对应的和值和所述存储器中保存的最大值确定所述乘积对应的部分余数。
6.如权利要求5所述的装置,其特征在于,所述求余器还包括模寄存器、和累加器,所述装置包括累加模块,用于:
根据所述第一乘数的位数逐次调用所述累加器累加所述模寄存器中的模;
将得到的各个累加值保存在存储器中。
7.如权利要求6所述的装置,其特征在于,所述累加模块,具体用于:
调用所述累加器将所述模寄存器中的模与所述累加器中的数值相加;将得到的结果保存在所述存储器中;
将累加次数加1后,确定所述累加次数的数值是否小于所述第一乘数的位数对应的最大值;
若确定所述累加次数的数值小于所述第一乘数的位数对应的最大值,则执行所述调用所述累加器将所述模寄存器中的模与所述累加器中的数值相加的步骤;
若确定所述累加次数的数值等于所述第一乘数的位数对应的最大值,则停止调用所述累加器。
8.如权利要求5-7任一所述的装置,其特征在于,所述确定模块,具体用于:
获取所述存储器中保存的最大值的相反数;
调用所述选定加法器将所述选定加法器的和值与所述相反数相加,得到所述乘积对应的部分余数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711386984.1A CN109947393B (zh) | 2017-12-20 | 2017-12-20 | 基于求余器的运算方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711386984.1A CN109947393B (zh) | 2017-12-20 | 2017-12-20 | 基于求余器的运算方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109947393A CN109947393A (zh) | 2019-06-28 |
CN109947393B true CN109947393B (zh) | 2021-11-02 |
Family
ID=67005184
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711386984.1A Active CN109947393B (zh) | 2017-12-20 | 2017-12-20 | 基于求余器的运算方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109947393B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110688094B (zh) * | 2019-09-12 | 2021-01-26 | 无锡江南计算技术研究所 | 一种基于并行循环压缩的余数运算电路及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1561479A (zh) * | 2001-09-28 | 2005-01-05 | 英特尔公司 | 蒙哥马利乘法器处理元件中的部件精简 |
CN102231102A (zh) * | 2011-06-16 | 2011-11-02 | 天津大学 | 基于余数系统的rsa密码处理方法及协处理器 |
WO2012068258A2 (en) * | 2010-11-16 | 2012-05-24 | Rf Micro Devices, Inc. | Digital fast cordic for envelope tracking generation |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004258141A (ja) * | 2003-02-24 | 2004-09-16 | Fujitsu Ltd | モンゴメリ乗算剰余の多倍長演算のための演算装置 |
DE602007012805D1 (de) * | 2006-08-31 | 2011-04-14 | St Microelectronics Sa | Maskierung einer gemäß eines RSA-CRT-Algorithmus durchgeführten Berechnung |
-
2017
- 2017-12-20 CN CN201711386984.1A patent/CN109947393B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1561479A (zh) * | 2001-09-28 | 2005-01-05 | 英特尔公司 | 蒙哥马利乘法器处理元件中的部件精简 |
WO2012068258A2 (en) * | 2010-11-16 | 2012-05-24 | Rf Micro Devices, Inc. | Digital fast cordic for envelope tracking generation |
CN102231102A (zh) * | 2011-06-16 | 2011-11-02 | 天津大学 | 基于余数系统的rsa密码处理方法及协处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN109947393A (zh) | 2019-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9813224B2 (en) | Digital processor having instruction set with complex angle function | |
EP3447634B1 (en) | Non-linear function computing device and method | |
CN115344237B (zh) | 结合Karatsuba和蒙哥马利模乘的数据处理方法 | |
US10949168B2 (en) | Compressing like-magnitude partial products in multiply accumulation | |
KR102132261B1 (ko) | 비교 연산이 필요없이 최종 모듈러 감소를 하는 몽고메리 곱셈 방법 및 곱셈기 | |
CN109947393B (zh) | 基于求余器的运算方法及装置 | |
US10558432B2 (en) | Multiply-add operations of binary numbers in an arithmetic unit | |
Yan et al. | An implementation of Montgomery modular multiplication on FPGAs | |
CN106371803B (zh) | 用于蒙哥马利域的计算方法和计算装置 | |
TW202319909A (zh) | 用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置 | |
JP6382577B2 (ja) | 関数モデルを純粋にハードウェア上で計算するモデル計算ユニット内での利用ためのfmaユニット | |
JPH0628155A (ja) | 除算方法および除算装置 | |
WO2023141934A1 (en) | Efficient masking of secure data in ladder-type cryptographic computations | |
CN113672196B (zh) | 一种基于单数字信号处理单元的双乘法计算装置和方法 | |
CN109992242B (zh) | 基于乘法器的运算方法及装置 | |
WO2023003737A2 (en) | Multi-lane cryptographic engine and operations thereof | |
CN111930674B (zh) | 乘累加运算装置及方法、异构智能处理器及电子设备 | |
CN102646033A (zh) | 模乘运算的实现方法和装置 | |
Zadiraka et al. | Calculating the Sum of Multidigit Values in a Parallel Computational Model | |
WO2023141933A1 (en) | Techniques, devices, and instruction set architecture for efficient modular division and inversion | |
WO2023141936A1 (en) | Techniques and devices for efficient montgomery multiplication with reduced dependencies | |
CN113467752B (zh) | 用于隐私计算的除法运算装置、数据处理系统及方法 | |
CN114706557B (zh) | 一种asic芯片及蒙哥马利模乘的实现方法和装置 | |
US20220269488A1 (en) | Fast Precomputation for Montgomery Multiplier | |
US20230042366A1 (en) | Sign-efficient addition and subtraction for streamingcomputations in cryptographic engines |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |