CN116991362A - 模乘运算处理方法、装置、电子设备及可读介质 - Google Patents
模乘运算处理方法、装置、电子设备及可读介质 Download PDFInfo
- Publication number
- CN116991362A CN116991362A CN202310962029.7A CN202310962029A CN116991362A CN 116991362 A CN116991362 A CN 116991362A CN 202310962029 A CN202310962029 A CN 202310962029A CN 116991362 A CN116991362 A CN 116991362A
- Authority
- CN
- China
- Prior art keywords
- unit
- result
- intermediate result
- storage unit
- modular multiplication
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 30
- 238000000034 method Methods 0.000 claims abstract description 25
- 230000008569 process Effects 0.000 claims abstract description 13
- 230000015654 memory Effects 0.000 claims description 34
- 238000012545 processing Methods 0.000 claims description 19
- 238000001514 detection method Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 7
- 238000004364 calculation method Methods 0.000 abstract description 54
- 125000004122 cyclic group Chemical group 0.000 abstract description 5
- 238000006073 displacement reaction Methods 0.000 abstract description 2
- 238000004422 calculation algorithm Methods 0.000 description 10
- 238000013461 design Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/722—Modular multiplication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种模乘运算处理方法、装置、电子设备及可读介质,用于计算R·A(mod N),该模乘运算处理方法可以将复杂的R·A(mod N)模乘运算转化为简单的二进制位移、比较运算和减法运算。本发明提供的模乘运算处理方法,通过计算A(mod N)得到第一中间结果P,将所述第一中间结果P存入结果存储单元,然后通过循环左移和减法运算得到R·A(mod N)的结果,避免了除法运算,提高了计算效率;通过预定位数左移和比较运算,实现了以2为基底的R·A(mod N)计算,简化了计算过程,便于硬件实现;而且可以通过复用结果存储单元存储中间结果和最终结果,减少了存储空间的占用。
Description
技术领域
本发明是关于电数字数据处理领域,特别是关于一种模乘运算处理方法、装置、电子设备及可读介质。
背景技术
大数模乘运算是许多密码学算法的核心运算,例如RSA算法。大数模乘运算指两数相乘再求模即x·y(mod N),其中x和y表示两个乘数,N表示模数(2n-1<N<2n,n表示比特)。求模运算会涉及到除法,对于大数模乘运算,除法会导致模乘运算效率降低。为了避免除法运算,提升大数模乘运算的效率,通常需要将模乘运算转换为montgomery模乘运算即MonMul(x,y,N)。montgomery模乘运算需要将两个乘数x和y转换到montgomery域,然后再进行乘法运算。montgomery模乘运算需要计算R·R(mod N),其中R=2n,然后根据R·R(mod N)的计算结果将乘数转换到montgomery域。R·R(mod N)的计算速度的快慢会对montgomery模乘运算速度的快慢产生影响。
在嵌入式系统应用中,R·R(mod N)传统的计算方法一般是通过软件进行计算或者将R·R(mod N)的值从外部写入到FLASH中。软件计算方法虽然不占用额外的面积,但是计算速度慢。将R·R(mod N)的值从外部写入到FLASH中虽然不消耗计算时间,但是占用的FLASH空间较大。
因此,针对上述技术问题,有必要提供一种新的模乘运算处理方法、装置、电子设备及可读介质。
发明内容
本发明的目的在于提供一种模乘运算处理方法、装置、电子设备及可读介质,其能够避免模乘运算中的除法运算,提高计算效率。
第一方面,本发明提供了一种模乘运算处理方法,用于计算R·A(mod N),其中,R=2n,2n-1<N<2n,A和N为正整数,所述方法包括以下步骤:
S101:计算A(mod N)得到第一中间结果P,将所述第一中间结果P存入结果存储单元;
S102:读取所述结果存储单元中的所述第一中间结果P,将所述第一中间结果P转换成二进制数并左移预定位数,得到第二中间结果S,且使所述第二中间结果S<2N;
S103:比较所述第二中间结果S与N的大小;若所述第二中间结果S≥N,将第二中间结果S减去N得到第三中间结果RS,并将所述第三中间结果RS作为下一次循环中的第一中间结果P存入到结果存储单元中;若所述第二中间结果S<N,将所述第二中间结果S作为下一次循环中的第一中间结果P存入到结果存储单元中;
S104:循环步骤S102和S103,直至每次循环中对所述第一中间结果P的左移位数之和等于n。
在一个或多个实施方式中,将所述第一中间结果P转换成二进制并左移预定位数,包括:
将所述第一中间结果P转换成二进制数并左移一位。
在一个或多个实施方式中,所述将所述第一中间结果P转换成二进制并左移预定位数,包括:
将所述第一中间结果P转换成n位二进制数;基于所述n位二进制数的最高的m位数据中,从高位到低位出现第一个1之前连续0的个数M,将所述第一中间结果P左移M位,且在M为0时,将所述第一中间结果P左移一位。
第二方面,本发明提供了一种模乘运算装置,用于实现如前所述的模乘运算处理方法,所述模乘运算装置包括:
模数存储单元,用于存储模数N;
结果存储单元,用于存储计算R·A(mod N)过程中的中间结果和最终结果;
移位单元,用于对所述结果存储单元中的中间结果进行左移处理;
比较单元,用于比较所述左移处理后的中间结果与所述模数N的大小;
减法单元,用于在所述左移处理后的中间结果大于所述模数N时,将所述左移处理后的中间结果减去所述模数N。
在一个或多个实施方式中,所述模数存储单元与所述比较单元及所述减法单元连接,所述结果存储单元与所述移位单元、所述比较单元及所述减法单元连接,所述减法单元与所述移位单元及所述比较单元连接。
在一个或多个实施方式中,所述模乘运算装置还包括多路选择单元,所述多路选择单元的输入端与所述移位单元及所述减法单元连接,所述多路选择单元的输出端与所述结果存储单元连接。
在一个或多个实施方式中,所述模乘运算装置还包括用于控制所述结果存储单元、减法单元及移位单元的数据流流向的控制单元,所述控制单元与所述多路选择单元的控制端连接。
在一个或多个实施方式中,所述模乘运算装置还包括用于在将第一中间结果P转换成n位二进制数后,检测所述n位二进制数最高的m位数据中从高位到低位出现第一个1之前连续0的个数的数据检测单元,所述数据检测单元与所述结果存储单元及所述移位单元连接。
第三方面,本发明提供了一种电子设备,包括存储器、处理器、以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如前所述的模乘运算处理方法。
第四方面,本发明提供了一种计算机可读介质,所述计算机可读介质中承载有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如前所述的模乘运算处理方法。
与现有技术相比,本发明提供的模乘运算处理方法,通过计算A(mod N)得到第一中间结果P,将所述第一中间结果P存入结果存储单元,然后通过循环左移和减法运算得到R·A(mod N)的结果,避免了除法运算,提高了计算效率;通过预定位数左移和比较运算,实现了以2为基底的R·A(mod N)计算,简化了计算过程,便于硬件实现;而且可以通过复用结果存储单元存储中间结果和最终结果,减少了存储空间的占用。
附图说明
图1是本发明一实施方式中模乘运算处理方法的流程图;
图2是本发明一实施方式中模乘运算装置的结构示意图;
图3是本发明另一实施方式中模乘运算装置的结构示意图;
图4是本发明一实施方式中电子设备的结构示意图。
具体实施方式
下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
除非另有其他明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其他元件或其他组成部分。
本申请发明人在对现有技术进行深入研究后,发现在大数模乘运算中,传统的算法往往需要进行繁琐的除法运算,这在处理大规模数据时,会大大降低运算效率,同时也会消耗大量的存储空间。特别是在嵌入式系统应用中,由于存储空间有限,因此如何在不占用额外存储空间的前提下提高运算效率,成为了一个重要的问题。
基于对这个问题的理解,本发明的实现思路的核心是设计一种新颖的模乘运算处理方法,该方法通过迭代计算和存储机制,将复杂的R·A(mod N)模乘运算转化为简单的二进制位移、比较运算和减法运算,且该运算方法能够通过简单的硬件实现,从而显著提高运算效率,减少了存储空间的需求。
请参照图1所示,为本发明一实施方式中的模乘运算处理方法的流程图,该模乘运算处理方法可用于计算R·A(mod N),其中,R=2n,2n-1<N<2n,A和N为正整数,该模乘运算处理方法具体包括以下步骤:
S101:计算A(mod N)得到第一中间结果P,将所述第一中间结果P存入结果存储单元。
需要说明是,计算A(mod N)指的是计算A除以N的余数,也就是A在N下的模,得到一个第一中间结果P,然后把这个结果存储在一个结果存储单元里。这个结果存储单元可以是一个寄存器或者一个内存地址,用于保存中间结果和最终结果。
为了计算R·A(mod N),需要先把A转换到N的范围内,也就是0到N-1之间。这样可以简化后续的计算过程,避免溢出和多余的运算。同时,需要把这个转换后的结果保存起来,方便后面进行循环左移和减法运算。在本实施方式中,第一中间结果P是一个关键的变量,它将在后续的步骤中被反复使用和更新。而且,由于该模乘运算处理方法是迭代的,即每一步的结果都依赖于前一步的结果,因此需要结果存储单元来存储和更新的第一中间结果P。
例如,假设要计算R·A(mod N),其中R=24,N=13,A=27。那么,首先要计算A(modN)得到第一中间结果P。具体的计算方法是:用A除以N,得到商和余数,然后取余数作为P。例如,27÷13=2...1,所以P=1。然后,把P=1存储在一个结果存储单元里,例如一个寄存器R0,即完成了步骤S101。
在软件实现中,可以直接使用编程语言提供的取模运算符,如Python中的%运算符,或者C/C++中的%运算符,来计算A(mod N)的结果,并将结果赋值给一个变量P。在硬件实现中,可以使用专门的取模运算硬件电路来计算A(mod N)的结果,然后将结果存入一个寄存器或者内存单元。
S102:读取所述结果存储单元中的所述第一中间结果P,将所述第一中间结果P转换成二进制数并左移预定位数,得到第二中间结果S,且使所述第二中间结果S<2N。
需要说明的是,为了计算R·A(mod N),需要将第一中间结果P乘以R,也就是2n。为了避免乘法运算,可以采用左移运算来代替。左移运算就是将二进制数的每一位向左移动一定的位数,相当于乘以2的相应次幂。例如,如果要计算24=16,可以将1左移4位,得到10000。但是,左移运算也有一个问题,就是可能会导致溢出,也就是结果超过了能表示的范围。为了避免溢出,需要限制左移的位数,使得第二中间结果S小于2N。这样可以保证后续的减法运算结果在N的范围内,也就是0到N-1之间。
一示例性的实施例中,将所述第一中间结果P转换成二进制并左移预定位数,具体包括:将所述第一中间结果P转换成二进制数并左移一位。
需要说明的是,为了简化计算过程和硬件实现方式,可以采用一种特殊的左移方式,即每次循环中只左移一位。由于第一中间结果P<N,每次循环中对P只左移一位,这样可以保证第二中间结果S=2P<2N。并且可以保证循环n次后,对第一中间结果P的左移位数之和等于n,也就是R的指数。同时,这样可以避免预定位数的确定和比较,减少运算量和硬件资源。
例如,假设要计算R·A(mod N),其中R=24=16,N=13,A=27。在步骤S101中,已经计算出A(mod N)得到第一中间结果P=1,并且将其存储在一个寄存器R0中。那么,在步骤S102中,首先要读取寄存器R0中的P=1,并且将其转换成二进制数00001。然后,要将00001左移一位,得到第二中间结果S=00010(十进制为2)。由于00010小于11010(十进制为26),所以没有溢出。
在本实施例中,通过将第一中间结果P转换成二进制数并左移一位,可以实现R·A(mod N)的计算过程中的乘法运算,并且避免溢出和多余的运算。同时,通过每次只左移一位,可以简化计算过程和减少硬件资源,并且便于硬件实现。
一示例性的实施例中,将所述第一中间结果P转换成二进制并左移预定位数,具体包括:将所述第一中间结果P转换成n位二进制数;基于所述n位二进制数的最高的m位数据中,从高位到低位出现第一个1之前连续0的个数M,将所述第一中间结果P左移M位,且在M为0时,将所述第一中间结果P左移一位。
需要说明的是,为了进一步提高计算效率,可以采用一种特殊的左移方式,即根据第一中间结果P的n位二进制表示中最高的m位数据中连续0的个数来确定左移的位数。这样可以减少循环次数,提高计算效率。
例如,假设要计算R·A(mod N),其中R=24=16,N=13,A=27。在步骤S101中,已经计算出A(mod N)得到第一中间结果P=1,并且将其存储在一个寄存器R0中。那么,在步骤S102中,首先要读取寄存器R0中的P=1,并且将其转换成4位二进制数0001(因为R=24,所以n=4)。然后,要根据0001最高的m位数据中连续0的个数来确定左移的位数。假设m=2(即只考虑最高两位),那么0001最高两位为00,在00中从高位到低位出现第一个1之前连续0的个数为2(即M=2)。因此,要将0001左移2位,得到0100(十进制为4)。由于0100小于11010(十进制为26),所以没有溢出。
在本实施例中,通过将第一中间结果P转换成n位二进制数,并且根据最高m位数据中连续0的个数来确定左移的位数,可以快速实现R·A(mod N)的计算过程中的乘法运算,并且避免溢出和多余的运算。同时,通过动态调整左移的位数,可以减少循环次数和提高计算效率。
S103:比较所述第二中间结果S与N的大小;若所述第二中间结果S≥N,将第二中间结果S减去N得到第三中间结果RS,并将所述第三中间结果RS作为下一次循环中的第一中间结果P存入到结果存储单元中;若所述第二中间结果S<N,将所述第二中间结果S作为下一次循环中的第一中间结果P存入到结果存储单元中。
需要说明的是,为了计算R·A(mod N),需要将第二中间结果S与N进行比较,判断是否需要进行减法运算。比较操作可以通过硬件的比较器来实现,或者在软件中通过比较语句来实现。
如果第二中间结果S大于或等于N,那么说明它已经超出了N的范围,也就是0到N-1之间。为了使它回到N的范围内,需要将它减去N,得到一个新的结果,也就是第三中间结果RS。这个结果就是R·A(mod N)的一个中间值,需要将它存储在结果存储单元中,方便后面进行循环左移和减法运算。减法操作可以通过硬件的减法器来实现,或者在软件中通过减法语句来实现。
如果第二中间结果S小于N,那么说明它已经在N的范围内,不需要进行减法运算。这个结果也是R·A(mod N)的一个中间值,也需要将它存储在结果存储单元中,方便后面进行循环左移和减法运算。
例如,假设要计算R·A(mod N),其中R=24=16,N=13,A=27。在步骤S102中,已经计算出第二中间结果S=0100(十进制为4),并且没有溢出。那么,在步骤S103中,首先要比较S=0100和N=1101(十进制为13)的大小。由于0100小于1101,所以不需要进行减法运算。因此,直接将S=0100作为下一次循环中的第一中间结果P存入到寄存器R0中。
步骤S103目的是为了确保结果始终在0到N-1之间,这是模运算的定义。同时,它也保存了中间结果,为下一次循环做准备。这种方式避免了在每次循环中重新计算,提高了运算效率。
S104:循环步骤S102和S103,直至每次循环中对所述第一中间结果P的左移位数之和等于n。
需要说明的是,步骤S104主要是指执行一个循环操作。在硬件设计中,这可以通过一个计数器和一个控制逻辑来实现;在软件设计中,这可以通过一个for循环或while循环来实现。在每一次循环中,都会执行步骤S102和S103,对第一中间结果P进行左移操作,然后进行比较和条件选择。在每一次左移操作后,都会对左移位数进行累加,直到累加结果等于n时,循环结束。
例如,如果n=4,每次将P左移一位,那么就需要循环4次,然后进行比较和选择。每次循环后,都会将左移的位数累加,当累加结果等于4时,循环结束。
为了实现左移运算,并且避免溢出,需要进行多次循环。在每次循环中,都要执行步骤S102和S103。步骤S102是将第一中间结果P转换成二进制数并左移预定位数,得到第二中间结果S,且使第二中间结果S小于2N。步骤S103是比较第二中间结果S与N的大小;若第二中间结果S大于或等于N,将第二中间结果S减去N得到第三中间结果RS,并将第三中间结果RS作为下一次循环中的第一中间结果P存入到结果存储单元中;若第二中间结果S小于N,将第二中间结果S作为下一次循环中的第一中间结果P存入到结果存储单元中。需要重复这样的循环,直到每次循环中对第一中间结果P的左移位数之和等于n。这样可以保证完成了R·A(mod N)的计算,并且得到正确的结果。
假设要计算R·A(mod N),其中R=24=16,N=13,A=27。在步骤S101中,已经计算出A(mod N)得到第一中间结果P=1,并且将其存储在一个寄存器R0中。那么,在步骤S104中,需要进行多次循环(因为n=4),每次循环都要执行步骤S102和S103,每次循环中可以根据第一中间结果P的n位二进制表示中最高的m位数据中连续0的个数来确定左移的位数。具体的过程如下:
第一次循环:执行步骤S102,读取寄存器R0中的P=1,并且将其转换成4位二进制数0001。然后根据0001最高两位为00,在00中从高位到低位出现第一个1之前连续0的个数为2(即M=2),将0001左移2位,得到0100(十进制为4)。由于0100小于11010(十进制为26),所以没有溢出。因此,得到S=0100。执行步骤S103,比较S=0100和N=1101(十进制为13)的大小。由于0100小于1101,所以不需要进行减法运算。因此,直接将S=0100作为下一次循环中的第一中间结果P存入到寄存器R0中。
第二次循环:执行步骤S102,读取寄存器R0中的P=0100,然后根据0100最高两位为01,在01中从高位到低位出现第一个1之前连续0的个数为1(即M=1),将0100左移1位,得到1000(十进制为8)。由于1000小于11010(十进制为26),所以没有溢出。因此,得到S=1000。执行步骤S103,比较S=1000和N=1101(十进制为13)的大小。由于1000小于1101,所以不需要进行减法运算。因此,直接将S=1000作为下一次循环中的第一中间结果P存入到寄存器R0中。
第三次循环:执行步骤S102,读取寄存器R0中的P=1000,然后根据1000最高两位为10,在10中从高位到低位出现第一个1之前连续0的个数为0(即M=0),将1000左移1位,得到10000(十进制为16)。由于10000小于11010(十进制为26),所以没有溢出。因此,得到S=10000。执行步骤S103,比较S=10000和N=1101(十进制为13)的大小。由于10000大于1101,所以需要进行减法运算RS=S-N=16-13=3(十进制)。至此,完成了三次循环,并且每次循环中对第一中间结果P的左移位数之和等于4。得到了最终的结果R·A(mod N)=RS=3,并且将其存储在寄存器R0中。
在第一种具体的代码算法实现中,本发明提供的模乘运算处理方法可以表示如下:
在第一种代码算法中,以2为基底,每次完成乘2即左移1位或者左移1位和减法操作,n次循环之后得到2n·A(mod N)即R·A(mod N)的计算结果。
在第二种具体的代码算法实现中,本发明提供的模乘运算处理方法可以表示如下:
在第一种代码算法中,“||P||”表示数据P从最高位到最低位检测到第一个1之前连续0的个数,该算法同样以2为基底,每次完成乘2或者乘2次幂即左移或者左移和减法操作,需要的循环次数一般小于n。
综上所述,本发明提供的模乘运算处理方法,通过计算A(mod N)得到第一中间结果P,将所述第一中间结果P存入结果存储单元,然后通过循环左移和减法运算得到R·A(mod N)的结果,避免了除法运算,提高了计算效率;通过预定位数左移和比较运算,实现了以2为基底的R·A(mod N)计算,简化了计算过程,便于硬件实现;而且可以通过复用结果存储单元存储中间结果和最终结果,减少了存储空间的占用。
请参照图2所示,本发明一实施方式中提供了一种用于实现如前的模乘运算处理方法的模乘运算装置,该模乘运算装置包括:模数存储单元、结果存储单元、移位单元、比较单元和减法单元。其中,模数存储单元用于存储模数N。结果存储单元用于存储计算R·A(mod N)过程中的中间结果和最终结果。移位单元用于对结果存储单元中的中间结果进行左移处理。比较单元用于比较左移处理后的中间结果与模数N的大小。减法单元用于在左移处理后的中间结果大于模数N时,将左移处理后的中间结果减去模数N。
模数存储单元与比较单元及减法单元连接,结果存储单元与移位单元、比较单元及减法单元连接,减法单元与移位单元及比较单元连接。模乘运算装置还包括多路选择单元,多路选择单元的输入端与移位单元及减法单元连接,多路选择单元的输出端与结果存储单元连接。模乘运算装置还包括用于控制结果存储单元、减法单元及移位单元的数据流流向的控制单元,控制单元与多路选择单元的控制端连接。
模数存储单元和结果存储单元可以被看作是两个存储器,负责存储计算过程中需要用到的数据。模数存储单元主要存储模数N,而结果存储单元则用来存储计算的中间结果和最终结果。这两个存储单元的设计可以根据具体的计算需求进行,例如如果需要处理的数据是32位的,那么就需要设计32位的存储单元。在实际的硬件设计中,这两个存储单元可以是特定的存储器芯片,也可以是CPU内部的寄存器。
移位单元是负责进行数据移位操作的硬件电路,移位单元具体可以是一个移位器或者一个逻辑门电路,用于实现二进制数的左移操作。在模乘运算中,需要对数据进行左移操作,以达到乘以2的效果。移位单元的设计需要考虑到数据的位数,例如如果处理的数据是32位的,那么移位单元就需要能够处理32位数据的移位操作。在实际的硬件设计中,移位单元可以是专门的移位电路,也可以是CPU内部的算术逻辑单元(ALU)。
比较单元和减法单元是用来进行数据比较和减法操作的硬件电路。比较单元具体可以是一个比较器或者一个逻辑门电路,用于实现二进制数的大小比较操作。减法单元具体可以是一个减法器或者一个逻辑门电路,用于实现二进制数的减法操作。在模乘运算中,需要比较中间结果数据和模数N的大小,以决定是否需要进行减法操作。比较单元和减法单元的设计也需要考虑到数据的位数,同样,如果处理的数据是32位的,那么这两个单元就需要能够处理32位数据的比较和减法操作。在实际的硬件设计中,这两个单元通常会被集成在CPU的算术逻辑单元(ALU)中。
多路选择单元(MUX)是用来选择不同输入的硬件电路。在模乘运算中,需要根据比较的结果选择是否进行减法操作,这就需要使用到多路选择单元。多路选择单元的设计需要考虑到需要选择的输入数量,例如在模乘运算中,需要选择移位结果或者减法结果,那么多路选择单元就需要有两个输入端。在实际的硬件设计中,多路选择单元可以是专门的多路选择器,也可以是CPU内部的数据总线。
控制单元是用来控制整个运算过程的硬件电路。在模乘运算中,控制单元需要根据当前的计算状态,生成对应的控制信号,以控制其他各个单元的操作。控制单元的设计需要考虑到需要控制的单元数量和复杂度,例如在模乘运算中,需要控制的单元有模数存储单元、结果存储单元、移位单元、比较单元、减法单元以及多路选择单元,那么控制单元就需要能够生成对应的控制信号。在实际的硬件设计中,控制单元通常会被设计为一个微程序控制器或者硬件状态机。
具体地,当结果存储单元中数据的最高位为0时,控制单元控制结果存储单元的数据输入到移位单元,移位单元对数据进行移位之后,控制单元控制多路选择单元将移位单元的输出依次写入到结果存储单元。然后将模数存储单元和结果存储单元相应位置的数据读出进行比较。如果结果存储单元的数据小于模数存储单元的数据,则结果存储单元中数据在当前循环不作其他处理。反之,将结果存储单元和模数存储单元的数据分别依次读出并输入到减法单元,在减法单元中将结果存储单元中的数据减去模数存储单元中的数据,然后控制单元控制多路选择单元MUX将减法单元的输出依次写入到结果存储单元。当结果存储单元中数据最高位为1时,控制单元控制结果存储单元中的数据依次读出并输入到移位单元,移位操作完成后移位单元的输出结果输入到减法单元,控制单元控制移位单元的输出结果和从模数存储单元依次读取的数据作减法,最后控制单元控制多路选择单元MUX将减法单元的输出结果依次写入到结果存储单元。
图2所示的模乘运算装置可以用于实现前述的第一种代码算法,具体实现过程如下:
计算A(mod N):可通过现有的计算方式计算A(mod N),计算完成之后,将A(mod N)的结果存储到结果存储单元中。
循环计算2nA(mod N):将结果存储单元中的数据依次读出进行移位或者移位和减法运算,n次循环之后得到最终计算结果。根据每次循环开始时从结果存储单元中读出的数据最高位为0或者1,分两种情况进行计算。最高位为1时,由于结果存储单元中的数据左移1位之后大于模N,所以移位操作之后可以直接进行减法操作。最高位为0时,结果存储单元中的数据左移1位之后不能判断是否大于模N,所以移位之后不能直接进行减法操作。
结果存储单元中数据最高位为0时,将结果存储单元中的数据依次读出并输入到移位单元,控制单元控制多路选择单元(MUX)将移位单元的输出依次写入到结果存储单元。移位操作完成之后将模数存储单元和结果存储单元相应位置的数据读出进行比较。如果结果存储单元的数据小于模数存储单元的数据,则结果存储单元中数据在当前循环不作其他处理。反之,将结果存储单元和模数存储单元的数据分别依次读出并输入到减法单元,在减法单元中将结果存储单元中的数据减去模数存储单元中的数据,然后控制单元控制多路选择单元将减法单元的输出依次写入到结果存储单元。至此结果存储单元中数据最高位为0的当前循环计算完成。
结果存储单元中数据最高位为1时,将结果存储单元中的数据依次读出并输入到移位单元,移位操作完成后将移位单元的输出结果输入到减法单元。在减法单元中,移位单元的输出结果和从模数存储单元依次读取的数据作减法。控制单元控制多路选择单元将减法单元的输出结果依次写入到结果存储单元。至此结果存储单元中数据最高位为1的当前循环计算完成。
当前循环计算完成之后开启新循环,根据循环开始时从结果存储单元中读出数据最高位为0或者1开始计算。n次循环完成之后,得到2nA(mod N)的计算结果即R·A(mod N),最终计算结果存放在结果存储单元中。可根据结果存储单元读出数据的最高位为0的情况,可以在移位过程中和模N相应位置的数据作比较,而不是先移位后比较。这样可以加快R·A(mod N)的计算速度,但是没有增加额外的硬件实现面积。
请参照图3所示,本发明一实施方式中提供了另一种用于实现如前的模乘运算处理方法的模乘运算装置,该模乘运算装置相较于图2所示的模乘运算装置除增加了数据检测单元外,其他结构元器件即连接关系与图2所示的模乘运算装置一致。
该数据检测单元用于在将第一中间结果P转换成n位二进制数后,检测所述n位二进制数最高的m位数据中从高位到低位出现第一个1之前连续0的个数的数据检测单元,该数据检测单元与结果存储单元及移位单元连接。
图3所示的模乘运算装置可以用于实现前述的第二种代码算法,具体实现过程如下:
计算A(mod N):可通过现有的计算方式计算A(mod N),计算完成之后,将A(mod N)的结果存储到结果存储单元中。
循环计算2nA(mod N):将结果存储单元中的数据依次读出进行移位或者移位和减法运算,得到2nA(mod N)的计算结果后停止循环。根据数据检测单元输出为0和非0,分两种情况进行计算。数据检测单元输出为0时,因为结果存储单元中的数据左移之后大于模N,所以移位操作之后可以直接进行减法操作。数据检测单元输出非0时,结果存储单元中的数据左移1位之后不能判断是否大于模N,所以移位之后不能直接进行减法操作。
数据检测单元输出为0时,将结果存储单元中的数据依次读出并输入到移位单元左移一位,移位操作完成后将移位单元的输出结果输入到减法单元。在减法单元中,移位单元的输出结果和从模数存储单元依次读取的数据作减法。控制单元控制多路选择单元MUX将减法单元的输出结果依次写入到结果存储单元。至此数据检测单元输出为0的当前循环的计算完成。
数据检测单元输出非0时,将结果存储单元中的数据依次读出并输入到移位单元,移位单元根据数据检测单元的输出进行移位。控制单元控制多路选择单元将移位单元的输出依次写入到结果存储单元。移位操作完成之后将模数存储单元和结果存储单元相应位置的数据依次读出进行比较。如果结果存储单元的数据小于模数存储单元,则结果存储单元中数据在当前循环不作其他处理。反之,将结果存储单元和模数存储单元的数据分别依次读出并输入到减法单元,在减法单元中将结果存储单元的数据减去模数存储单元的数据,然后控制单元控制多路选择单元MUX将减法单元的输出依次写入到结果存储单元。至此数据检测单元输出非0的当前循环的计算完成。
当前循环计算完成之后开启新循环,根据数据检测单元输出为0或者非0开始计算,新循环的计算方法和上述方法相同。多次循环,直至每次循环中的左移位数之和等于n,得到2nA(mod N)的计算结果即R·A(mod N)的计算结果后停止循环。
图3所示的模乘运算装置通过增加一个数据检测单元,可以实现循环中的左移位数动态调整,可以加快R·A(mod N)运算速度。
请参照图4所示,本发明实施例还提供了一种电子设备400,该电子设备400包括至少一个处理器401、存储器402(例如非易失性存储器)、内存403和通信接口404,并且至少一个处理器401、存储器402、内存403和通信接口404经由总线405连接在一起。至少一个处理器401用于调用在存储器402中存储或编码的至少一个程序指令,以使得至少一个处理器401执行本说明书的各个实施方式中所描述的模乘运算处理方法的各种操作和功能。
在本说明书的实施例中,电子设备400可以包括但不限于:个人计算机、服务器计算机、工作站、桌面型计算机、膝上型计算机、笔记本计算机、移动电子设备、智能电话、平板计算机、蜂窝电话、个人数字助理(PDA)、手持装置、消息收发设备、可佩戴电子设备、消费电子设备等等。
本发明实施例还提供了一种计算机可读介质,该计算机可读介质上承载有计算机执行指令,所述计算机执行指令被处理器执行时,可用于实现本说明书的各个实施例中描述的模乘运算处理方法的各种操作和功能。
本发明中的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置、系统、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。
Claims (10)
1.一种模乘运算处理方法,用于计算R·A(mod N),其中,R=2n,2n-1<N<2n,A和N为正整数,其特征在于,所述方法包括以下步骤:
S101:计算A(mod N)得到第一中间结果P,将所述第一中间结果P存入结果存储单元;
S102:读取所述结果存储单元中的所述第一中间结果P,将所述第一中间结果P转换成二进制数并左移预定位数,得到第二中间结果S,且使所述第二中间结果S<2N;
S103:比较所述第二中间结果S与N的大小;若所述第二中间结果S≥N,将第二中间结果S减去N得到第三中间结果RS,并将所述第三中间结果RS作为下一次循环中的第一中间结果P存入到结果存储单元中;若所述第二中间结果S<N,将所述第二中间结果S作为下一次循环中的第一中间结果P存入到结果存储单元中;
S104:循环步骤S102和S103,直至每次循环中对所述第一中间结果P的左移位数之和等于n。
2.如权利要求1所述的模乘运算处理方法,其特征在于,将所述第一中间结果P转换成二进制并左移预定位数,包括:
将所述第一中间结果P转换成二进制数并左移一位。
3.如权利要求1所述的模乘运算处理方法,其特征在于,将所述第一中间结果P转换成二进制并左移预定位数,包括:
将所述第一中间结果P转换成n位二进制数;
基于所述n位二进制数的最高的m位数据中,从高位到低位出现第一个1之前连续0的个数M,将所述第一中间结果P左移M位,且在M为0时,将所述第一中间结果P左移一位。
4.一种模乘运算装置,用于实现如权利要求1-3中任一项所述的模乘运算处理方法,其特征在于,所述模乘运算装置包括:
模数存储单元,用于存储模数N;
结果存储单元,用于存储计算R·A(mod N)过程中的中间结果和最终结果;
移位单元,用于对所述结果存储单元中的中间结果进行左移处理;
比较单元,用于比较所述左移处理后的中间结果与所述模数N的大小;
减法单元,用于在所述左移处理后的中间结果大于所述模数N时,将所述左移处理后的中间结果减去所述模数N。
5.如权利要求4所述的模乘运算装置,其特征在于,所述模数存储单元与所述比较单元及所述减法单元连接,所述结果存储单元与所述移位单元、所述比较单元及所述减法单元连接,所述减法单元与所述移位单元及所述比较单元连接。
6.如权利要求5所述的模乘运算装置,其特征在于,所述模乘运算装置还包括多路选择单元,所述多路选择单元的输入端与所述移位单元及所述减法单元连接,所述多路选择单元的输出端与所述结果存储单元连接。
7.如权利要求6所述的模乘运算装置,其特征在于,所述模乘运算装置还包括用于控制所述结果存储单元、减法单元及移位单元的数据流流向的控制单元,所述控制单元与所述多路选择单元的控制端连接。
8.如权利要求4所述的模乘运算装置,其特征在于,所述模乘运算装置还包括用于在将第一中间结果P转换成n位二进制数后,检测所述n位二进制数最高的m位数据中从高位到低位出现第一个1之前连续0的个数的数据检测单元,所述数据检测单元与所述结果存储单元及所述移位单元连接。
9.一种电子设备,包括存储器、处理器、以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1~3中任一项所述的模乘运算处理方法。
10.一种计算机可读介质,其特征在于,所述计算机可读介质中承载有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1~3中任一项所述的模乘运算处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310962029.7A CN116991362A (zh) | 2023-08-01 | 2023-08-01 | 模乘运算处理方法、装置、电子设备及可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310962029.7A CN116991362A (zh) | 2023-08-01 | 2023-08-01 | 模乘运算处理方法、装置、电子设备及可读介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116991362A true CN116991362A (zh) | 2023-11-03 |
Family
ID=88520976
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310962029.7A Pending CN116991362A (zh) | 2023-08-01 | 2023-08-01 | 模乘运算处理方法、装置、电子设备及可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116991362A (zh) |
-
2023
- 2023-08-01 CN CN202310962029.7A patent/CN116991362A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107077416B (zh) | 用于以选择性舍入模式进行向量处理的装置和方法 | |
CN107305484B (zh) | 一种非线性函数运算装置及方法 | |
KR20080055985A (ko) | 선택가능 준정밀도를 가진 부동―소수점 프로세서 | |
CN110515589B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
US11861323B2 (en) | Partially and fully parallel normaliser | |
CN112099761B (zh) | 基于改进的二进制左移模逆算法的装置及其控制方法 | |
TW200821916A (en) | Controlled-precision iterative arithmetic logic unit | |
WO1999066423A1 (fr) | Dispositif pour calcul de donnees | |
CN111813375A (zh) | 求模运算处理方法及相关产品 | |
CN112650471A (zh) | 用于处理掩蔽数据的处理器和方法 | |
US20230244442A1 (en) | Normalizer and multiplication and accumulation (mac) operator including the normalizer | |
CN116991362A (zh) | 模乘运算处理方法、装置、电子设备及可读介质 | |
CN116166217A (zh) | 执行浮点操作的系统和方法 | |
CN109478199B (zh) | 分段线性逼近的系统及方法 | |
CN115268832A (zh) | 浮点数取整的方法、装置以及电子设备 | |
CN115483934A (zh) | 用于多方安全计算的数据转换方法和装置 | |
US8933731B2 (en) | Binary adder and multiplier circuit | |
CN114510217A (zh) | 处理数据的方法、装置和设备 | |
WO2020146284A1 (en) | Efficient squaring with loop equalization in arithmetic logic units | |
US20050010632A1 (en) | Digital signal processor based on jumping floating-point arithmetic | |
CN113703717B (zh) | 二进制浮点数乘法运算电路及其控制方法、计算装置 | |
CN109669667B (zh) | 一种在定点dsp芯片上实现的数据处理方法及装置 | |
US7237000B2 (en) | Speed of execution of a conditional subtract instruction and increasing the range of operands over which the instruction would be performed correctly | |
US20090094306A1 (en) | Cordic rotation angle calculation | |
JP2009245407A (ja) | 複素数の積和演算装置および積和演算方法 |
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 |