模逆运算方法及运算器的制造方法

文档序号:10624554阅读:474来源:国知局
模逆运算方法及运算器的制造方法
【专利摘要】一种模逆运算方法及运算器,用于计算Z=Y-1mod X,其中Z为所述模逆运算的结果,X为第一操作数,Y为第二操作数,所述模逆运算方法包括:计算获取第一操作数X的二进制位长Xlen以及第二操作数Y的二进制位长Ylen;初始化第一变量R与第二变量S;当Xlen≥Ylen时,计算X模Y,当Xlen≤Ylen时,计算Y模X。在更新后的X=0且更新后的Y=1时,所述模逆运算的结果为更新后的第二变量S;在更新后的X=1且更新后的Y=0时,所述模逆运算的结果为X的初始值与更新后的第一变量R之差;在更新后的X与更新后的Y其中之一等于0而另一个不等于1时,所述模逆运算的结果不存在。采用所述方法及运算器,可实现模为任意非零整数的模逆运算,提高模逆运算的计算效率,降低硬件功耗。
【专利说明】
模逆运算方法及运算器
技术领域
[0001] 本发明设及信息安全领域,尤其设及一种模逆运算方法及运算器。
【背景技术】
[0002] 模逆运算广泛应用在公钥密码体制中,例如,在RSA算法中的解密密钥生成时应 用到模逆运算,模逆运算也可W用于楠圆曲线密码算法中的点加和倍点运算。
[0003] 目前,求解模逆运算的方法主要包括模幕算法、扩展欧几里得算法、二进制扩展欧 几里得算法等。
[0004] 模幕算法W费马小定理为基础,将模逆运算转换成模幕运算,但是模幕算法无法 确定模逆结果是否存在。采用模乘器作为硬件运算单元,较为复杂且功耗较大。 阳0化]扩展欧几里得算法通过無转相除计算最大公因子求解模逆,当最大公因子为非1 整数时无法获取模逆的计算结果。采用除法器作为硬件运算单元,实现仍较为复杂。
[0006] 二进制扩展欧几里得算法将除法转换成移位和加减法,但是,在移位的过程中,操 作数的权值发生了改变,最终运算结果中包含有2"(η为操作数的位长)项权重因子,去除 权重因子需进行多次除2的操作,因此,要求模必须是奇数。
[0007] 现有的二进制扩展欧几里得算法方法在进行模逆运算时仍存在一定的限制,无法 针对任意非零整数求模,并且计算过程较为复杂。

【发明内容】

[0008] 本发明实施例解决的问题是如何实现对任意非零整数求模,并提高模逆运算的计 算效率,降低硬件功耗。
[0009] 为解决上述问题,本发明实施例提供一种模逆运算方法,用于计算Ζ = Υ imodX,其 中Z为所述模逆运算的结果,X为第一操作数,Y为第二操作数,包括:
[0010] 获取第一操作数X的二进制位长xien W及第二操作数Y的二进制位长Ylen ;初 始化第一变量R与第二变量S ; W11]当 Xlen > Ylen 时,计算 X 模 Y :
[0012] 在X为正数时,将X左移N1位至最高位为1,低位补N1位无效0,将左移后的X与 Y高位对齐相减,将差值的后N1位去除,作为更新后的X,将第一变量R与左移狂len-Ylen) 位的第二变量S低位对齐相加之和作为更新后的第一变量R ; 阳01引在X为负数时,将X左移N2化低位补N2位无效0,将左移后的X与Y高位对齐相 加,将和值的后N2位去除,作为更新后的X,将第一变量R与左移狂len-Ylen)位的第二变 量S低位对齐并相减,得到的差值作为更新后的第一变量R ;其中,N2为:X最高位的0前的 符号位的个数N3与狂len-Ylen)之间的最小值;
[0014] 当Xlen《Ylen时,计算Y模X:
[0015] 在Y为正数时,将Y左移Ml位至最高位为1,低位补Ml位无效0,将左移后的Y与 X高位对齐相减,将差值的后Ml位去除,作为更新后的Y ;将第二变量S与左移灯len-xien) 位的第一变量R低位对齐相加之和作为更新后的第二变量S ;
[0016] 在Y为负数时,将Y左移M2位,低位补M2位无效0,将左移后的Y与X高位对齐相 加,将和值的后M2位去除,作为更新后的Y ;将第二变量S与左移灯len-Xlen)位的第一变 量R低位对齐并相减,得到的差值作为更新后的第二变量S ;其中,M2为:Y最高位的0前的 符号位的个数M3与(Ylen-Xlen)之间的最小值;
[0017] 在更新后的X = 0且更新后的Y = 1时,所述模逆运算的结果为更新后的第二变 量S ;在更新后的X = 1且更新后的Y = 0时,所述模逆运算的结果为X的初始值与更新后 的第一变量R之差;在更新后的X与更新后的Y其中之一等于0而另一个不等于1时,所述 模逆运算的结果不存在。
[0018] 本发明实施例还提供了一种模逆运算器,用于计算Z = Y imod X,其中Z为所述模 逆运算的结果,X为第一操作数,Y为第二操作数,包括:控制器、移位器、加减法运算器W及 存储器,其中:
[0019] 获取第一操作数X和第二操作数Y,W及第一操作数X的二进制位长Xlen、第二操 作数Y的二进制位长Ylen ;初始化第一变量R与第二变量S ;
[0020] 当 Xlen > Ylen 时,计算 X 模 Y :
[0021] 在X为正数时,将X左移N1位至最高位为1,低位补N1位无效0,将左移后的X与 Y高位对齐相减,将差值的后N1位去除,作为更新后的X,将第一变量R与左移狂len-Ylen) 位的第二变量S低位对齐相加之和作为更新后的第一变量R ; 阳02引在X为负数时,将X左移N2化低位补N2位无效0,将左移后的X与Y高位对齐相 加,将和值的后N2位去除,作为更新后的X,将第一变量R与左移狂len-Ylen)位的第二变 量S低位对齐并相减,得到的差值作为更新后的第一变量R ;其中,N2为:X最高位的0前的 符号位的个数N3与狂len-Ylen)之间的最小值;
[0023] 当Xlen《Ylen时,计算Y模X :
[0024] 在Y为正数时,将Y左移Ml位至最高位为1,低位补Ml位无效0,将左移后的Y与 X高位对齐相减,将差值的后Ml位去除,作为更新后的Y ;将第二变量S与左移灯len-Xlen) 位的第一变量R低位对齐相加之和作为更新后的第二变量S ; 阳02引在Y为负数时,将Y左移M2化低位补M2位无效0,将左移后的Y与X高位对齐相 加,将和值的后M2位去除,作为更新后的Y ;将第二变量S与左移灯len-Xlen)位的第一变 量R低位对齐并相减,得到的差值作为更新后的第二变量S ;其中,M2为:Y最高位的0前的 符号位的个数M3与灯len-Xlen)之间的最小值;
[00%] 在更新后的X = 0且更新后的Y = 1时,所述模逆运算的结果为更新后的第二变 量S ;在更新后的X = 1且更新后的Y = 0时,所述模逆运算的结果为X的初始值与更新后 的第一变量R之差;在更新后的X与更新后的Y其中之一等于0而另一个不等于1时,所述 模逆运算的结果不存在。
[0027] 与现有技术相比,本发明实施例的技术方案具有W下优点:
[0028] 在第一操作数X位长大于第二操作数Y时,X左移时可W消除冗余的符号位,通过 变量Xlen记录X的实时位长,X的权值没有发生变化。R和S的运算遵循低位对齐的运算 方法,R无左移操作,即R的权值也没有发生改变。类似的,在Y位长大于X时,Y左移时可 W消除冗余的符号位,通过变量Ylen记录Y的实时位长,Y的权值没有发生变化。R和S的 运算遵循低位对齐的运算方法,s无左移操作,即s的权值也没有发生改变。即在整个模逆 运算过程中,运算的结果不包括权重因子,相比于现有的二进制扩展欧几里得算法,不需要 再对运算结果进行权重因子的消除操作,并且可W不限定模必须为奇数,可W实现模为任 意非零整数的模逆运算,并提高模逆运算的计算效率,降低硬件功耗。
【附图说明】
[0029] 图1是本发明实施例中的一种模逆运算方法的流程图;
[0030] 图2是本发明实施例中的一种模逆运算器的结构示意图。
【具体实施方式】
[0031] 现有的二进制扩展欧几里得算法将除法转换成移位和加减法,但是,在移位的过 程中,操作数的权值发生了改变,最终运算结果中包含有2"(η为操作数的位长)项权重因 子,去除权重因子需进行多次除2的操作,因此,要求模必须是奇数。但是,现有的二进制扩 展欧几里得算法方法在进行模逆运算时仍存在一定的限制,无法针对任意非零整数求模, 并且计算过程较为复杂。
[0032] 在本发明实施例中,在第一操作数X位长大于第二操作数Υ时,X左移时可W消除 冗余的符号位,通过变量Xlen记录X的实时位长,X的权值没有发生变化。R和S的运算遵 循低位对齐的运算方法,R无左移操作,即R的权值也没有发生改变。类似的,在Y位长大 于X时,Y左移时可W消除冗余的符号位,通过变量Ylen记录Y的实时位长,Y的权值没有 发生变化。R和S的运算遵循低位对齐的运算方法,S无左移操作,即S的权值也没有发生 改变。在整个模逆运算过程中,运算的结果不包括权重因子,相比于现有的二进制扩展欧几 里得算法,不需要再对运算结果进行权重因子的消除操作,并且可W不限定模必须为奇数, 可W实现对任意非零整数求模。
[0033] 为使本发明实施例的上述目的、特征和优点能够更为明显易懂,下面结合附图对 本发明的具体实施例做详细的说明。
[0034] 本发明实施例提供了一种模逆运算方法,用于计算Z = Y imodX,其中Z为所述模 逆运算的结果,X为第一操作数,Y为第二操作数,参照图1,W下通过具体步骤对本发明实 施例提供的模逆运算方法进行详细说明。
[0035] 步骤S101,获取第一操作数X的二进制位长Xlen W及第二操作数Y的二进制位长 Ylen,初始化第一变量R与第二变量S。
[0036] 在具体实施中,第一操作数X和第二操作数Y均为非0的正整数。在获取到第一 操作数X和第二操作数Y之后,将第一操作数X和第二操作数Y依次进行二进制转换,从而 可W分别获取第一操作数X对应的初始二进制位长xien,W及第二操作数Y对应的初始二 进制位长Ylen。
[0037] 例如,计算Z = 13 imodl7,即第一操作数X的值为17,转换成二进制数为X = 10001,Xlen = 5。又如,第二操作数Y的值为13,转换成二进制数为Y = 1101,Ylen = 4。
[0038] 在具体实施中,可W根据实际的应用场景初始化第一变量R和第二变量S。在本发 明一实施例中,初始化第一变量R = 0,第二变量S = 1。
[0039] 步骤 S102,当 Xlen > Ylen 时,计算 X 模 Y。
[0040] 在本发明实施例中,可W先对第一操作数对应的Xlen与第二操作数对应的Ylen 进行比较。在Xlen > Ylen时,根据第一操作数X的符号位,执行对应的操作,包括:
[OOW 1)在X为正数时,即X的符号位为0时,将X左移N1位至最高位为1,X的低位补 N1位无效0 ;将左移后的X与Y高位对齐相减,将得到的差值的后N1位去除,得到的结果作 为更新后的X ;将第一变量R与左移狂len-Ylen)位的第二变量S低位对齐相加,并将得到 的和值作为更新后的第一变量R。在本发明实施例中,需要注意的是,在N1大于Xlen-Ylen 时,X左移N1位后的值小于Y,X模Y计算结束,若X = 0,计算结束,若X〉0,进行Y模X计 算。
[0042] 例如,X = ΟΟΟΙΟΟΟΙ,Υ = ΙΟΟΟ,Χ的符号位为0。将X左移N1 = 3位,低位补3位 无效0,则左移后的X = 10001000。在本发明实施例中,X在左移时低位补充的0是无效0, 实质上并没有参与X的运算,即实质上X对应的二进制位长xien = 5。
[0043] 将左移后的X与Y高位对齐做减法,在本发明实施例中,高位对齐运算是指:数A 的位长为M,数B的位长为N,Μ > N,将数A和数B进行高位对齐运算,是指将数B的低位补 (M-N)个0后进行的运算。
[0044] 即:
[0045]
[0046] 即得到的差值为00001000,将得到的差值的后3位去除,得到的值为00001,作为 更新后的X值,即更新后的X = 00001。
[0047] 初始化的第一变量R = 0,第二变量S = 1,第二变量S左移1位后,第二变量S更 新为S = 10,将第一变量R与左移后的第二变量S低位对齐并相加,得到0+10 = 10,即为 更新后的第一变量R= 10。 W48]。在X为负数时,即X的符号位为1时,将X左移N2位,X的低位补N2位无效0 ; 将左移后的X与Y高位对齐相加,将得到的和值的后N2位去除,得到的结果作为更新后的 X ;将第一变量R与左移狂len-Ylen)位的第二变量S低位对齐相减,并将得到的和值作为 更新后的第一变量R。其中,肥为:X最高位的0前的符号位的个数N3与狂len-Ylen)之 间的最小值。 W例例如,X =-10111,Y = 1101,X的符号位为1。将X左移N2 = 1位,低位补1位 无效零,则左移后的X = -01110。可W理解的是,左移后的X中,后1位的0为无效0,即实 质上X对应的二进制位长为Xlen = 4。将左移后的X与Y高位对齐做加法,即: 阳化0]
[0051] 即得到的和值为01000,将得到的和值的后1位去除,得到的值为0100,作为更新 后的X值,即更新后的X = 0100。
[0052] 当前步骤第一变量R= 110,第二变量S = 1,第二变量S左移1位后,更新为S = 10。将第一变量R与左移后的第二变量S低位对齐相减,得到的差值为110-10 = 100,即更 新后的第一变量R = 100。
[0053] 步骤S103,当Xlen《Ylen时,计算Y模X。
[0054] 1)在Y为正数时,将Y左移Ml位至最高位为1,低位补Ml位无效0,将左移后的Y与 X高位对齐相减,将差值的后Ml位去除,作为更新后的Y ;将第二变量S与左移灯len-xien) 位的第一变量R低位对齐相加,并将得到的和值作为更新后的第二变量S。 阳05引。在Y为负数时,将Y左移M2化低位补M2位无效0,将左移后的Y与X高位对 齐相加,将得到的和值的后M2位去除,作为更新后的Y ;将第二变量S与左移(Ylen-Xlen) 位的第一变量R低位对齐相减,得到的差值作为更新后的第二变量S ;其中,M2为:Y最高位 的0前的符号位的个数M3与(Ylen-Xlen)之间的最小值。
[0056] 在本发明实施例中,步骤S103的运算过程可W参见步骤S102,将步骤S102中的X 替换成Y,Y替换成X,R替换成S,S替换成R后,即可W为步骤S103中的运算过程。
[0057] 在本发明实施例中,在模逆运算的计算过程中,可W重复执行步骤S102~步骤 S103,即:在X更新后,将更新后的X对应的Xlen与Ylen进行再次比较,并根据比较结果, 执行步骤S102或步骤S103 ;或在Y更新完成后,将更新后的Y对应的Ylen与Xlen进行再 次比较,并根据比较结果,执行步骤S102或步骤S103。
[0058] 重复执行步骤S102或步骤S103,直至更新后的X和更新后的Y中,存在一个数为 0时,停止模逆运算。例如,在检测到x = o时,终止模逆运算。并根据当前Y的值,来确定 模逆运算的结果。
[0059] 在本发明一实施例中,在更新后的X = 0且更新后的Y = 1时,模逆运算的结果为 更新后的第二变量S ;在更新后的X = 1且更新后的Y = 0时,模逆运算的结果为X的初始 值与更新后的第一变量R之差;在更新后的X与更新后的Y其中之一为0且另一不等于1 时,判定模逆运算的结果不存在。
[0060] 下面W X值为17、Y值为13为例,对本发明上述实施例中提供的模逆运算方法进 行说明。
[0061] 计算 Z = 13 imodl7。 阳06引分别将X和Y W二进制数表示,则X= 10001,Υ= 1101。设定第一变量R = 0,第 二变量S = 1。从上述内容可知,X对应的Xlen = 5, Y对应的Ylen = 4。
[0063] Xlen > Ylen,且XIen-Ylen = 1,X为正数且X的第一位为1,则不将X左移,即X 左移的位数为0。将X与Y高位对齐相减,将得到的差值作为更新后的X,即更新后的X = 10001-11010 = -10111。
[0064] 第一变量R与左移1位的第二变量S相加,将得到的和值作为更新后的R,即更新 后的R = 10。 阳0化]更新后的X = -10111为负数,将X左移N2位,N2为X最高位的0前的符号位的个 数N3与狂len-Ylen)之间的最小值。X最高位的0前的符号位的个数N3 = 1,狂len-Ylen) =1,因此N2 = 1,即将X左移1位,低位补1位无效0,则左移后的X = -01110,由于最低 位的0为无效0,则左移后的X对应的Xlen = 4。
[0066] 更新后的X对应的Xlen与Ylen相等,Xlen-Ylen = 0。将Y与X相加,得到的和 值为-01110+11010 = 01000。将和值结果的最后1位去除,作为更新后的X,即更新后的X = 0100。
[0067] 第一变量R与左移0位的第二变量S相减,并将得到的差值作为更新后的R,即更 新后的R = 10-1 = 1。 W側 Y = 1101,更新后的X = 0100, X的束一位为化号位,因此X = 100。由于XIen不 包括X的符号位,因此Xlen = 3,即Ylen大于更新后的X对应的Xlen,Ylen-Xlen = 1。Y 为整数且Υ的第一位为1,Υ不左移。将Υ与X高位对齐相减,将得到的差值作为更新后的 Υ,即更新后的 Υ = 1101-1000 = 0101。 W例将更新后的R左移1位,并与第二变量S相加,得到更新后的第二变量S = 1+10 = 11。
[0070] 将更新后的Υ最高位为0,Υ为整数,将Υ左移1位至最高位为1,低位补1位无效 0,左移后的Υ = 1010。由于左移后的Υ的最低位的0为无效0,则Υ对应的Ylen = 3,X = 100,对应的 Xlen = 3,即 Xlen = Ylen。 阳071] 将Y与X高位对齐相减,得到的差值为1010-1000 = 10,将差值的最低位的0去 除,得到的值为1,即更新后的Υ= 1。将更新后的第二变量S与更新后的第一变量R相加, S = 11,R = 1,得到更新后的第二变量S = 11+1 = 100。
[0072] 更新后的Υ = 1,X = 100,即X对应的位长Xlen = 3, Υ对应的位长Ylen = 1, Xlen-Ylen = 2。将X与Y高位对齐相减,得到的差值为100-100 = 0,即为更新后的X值。 将第一变量R与左移2位的第二变量S相加,得到的和值为更新后的第一变量R = 1+10000 =10001。
[0073] 此时,更新后的X = 0,更新后的Υ= 1,模逆运算结束。
[0074] 从上述内容中可知,在更新后的X = 0且更新后的Υ = 1时,模逆运算的结果为更 新后的第二变量S。第二变量S = 100,转换成十进制数为4。即13 imodlT = 4。
[007引代入验证:13X4 = 52,对17求模得到的结果为1,即本发明上述实施例提供的模 逆运算方法求得的结果正确。
[0076] 由此可见,在第一操作数X位长大于第二操作数Y时,X左移时可W消除冗余的符 号位,通过变量Xlen记录X的实时位长,X的权值没有发生变化。R和S的运算遵循低位对 齐的运算方法,R无左移操作,即R的权值也没有发生改变。类似的,在Y位长大于X时,Y 左移时可W消除冗余的符号位,通过变量Ylen记录Y的实时位长,Y的权值没有发生变化。 R和S的运算遵循低位对齐的运算方法,S无左移操作,即S的权值也没有发生改变。即在 整个模逆运算过程中,运算的结果不包括权重因子,相比于现有的二进制扩展欧几里得算 法,不需要再对运算结果进行权重因子的消除操作,并且可W不限定模必须为奇数,可W实 现对任意非零整数求模。
[0077] 本发明实施例还提供了一种模逆运算器,用于计算Z = Y imod X,其中Z为所述模 逆运算的结果,X为第一操作数,Y为第二操作数,参照图2,包括:控制器201、移位器202、 加减法运算器203 W及存储器204,其中:
[0078] 存储器204中,存储有第一操作数X、第二操作数Y、第一变量R W及第二变量S。
[0079] 控制器201,适于保存并更新所述第一操作数X对应的二进制位长Xlen W及符号 位Xsign、所述第二操作数Y对应的二进制位长Ylen W及符号位Ysign,控制所述移位器 202 W及所述加减法运算器203实现X模Υ W及Υ模X,包括:
[0080] 在Xlen > Ylen,且Xsign = 0时,控制所述移位器202将X左移Ν1位至最高位 为1,低位补N1位无效0,控制所述移位器202将所述第二变量S左移狂len-Ylen)位;控 制所述加减法运算器203将左移后的X与Y高位对齐相减,将差值的后N1位去除作为更新 后的X并保存,将第一变量R与左移后的第二变量S低位对齐并相加,得到的和值作为更新 后的第一变量R。
[0081] 在本发明实施例中,在进行模逆运算时,控制器201从存储器204中读取X和Y,将 X送入移位器202。移位器202将X左移N1位至最高位为1,移位后X位长多出Y的低位 结果直接写入到存储器204,与Y位长相等的高位结果送入至加减法运算器203。加减法运 算器203将X的高位部分与Y相减,并将运算结果写入至存储器204。在加减法运算器203 进行减法运算的过程中出现借位时,X的符号位取反,否则X的符号位不变。将高位运算的 结果与移出的低位结合,并去除低位中的后N1位,作为更新后的X。
[0082] 例如,X = 00011001,Y = 1000。将X送入至移位器202,将X左移3位至最高位 为1,移位后X = 11001000,移位后的X位长多出Y的低位结果为1000,将1000写入到存 储器204中。与Y位长相等的X的高位结果为1100,将1100送入至加减法运算器203与Y 相减,得到的运算结果为0100,将运算结果写入至存储器203。将高位运算的结果与移出的 低位结合,得到的值为01001000,去除01001000的后3位,得到的值为01001即为更新后的 X。
[0083] 在本发明一实施例中,控制器201从存储器204中读取第一变量R和第二变量S, 将第二变量S送入至移位器202。移位器202将第二变量S左移N1位,加减法运算器203 将第一变量R与左移后的第二变量低位对齐相加,得到的和值作为更新后的第一变量R。
[0084] 可W理解的是,在本发明实施例中,第一变量R的计算与更新还可W存在其他的 实现方法。
[00化]在本发明另一实施例中,在计算X模Y的过程中,预先设置第Ξ变量QS,第Ξ变量 QS存储在存储器204中,且第Ξ变量QS的初始值为0。在每次X左移N1位与Y高位对齐 相减之后,从存储器204中读取第Ξ变量QS W及第二变量S。将第Ξ变量QS送入至移位 器202中左移N1位,将移位结果送入至加减法运算器203。加减法运算器203将左移后的 第=变量QS与第二变量S低位对齐并相加,得到的和值作为更新后的第Ξ变量QS。在X模 Y计算结束时,从存储器204中读取第一变量R和更新后的第Ξ变量QS,送入至加减法运算 器203中,将第一变量R与更新后的第Ξ变量QS低位对齐相加,得到的和值作为更新后的 第一变量R。
[0086] 在Xlen > Ylen,且Xsign = 1时,控制所述移位器将X左移N2位,低位补N2位无 效0,控制所述移位器将所述第二变量S左移狂len-Ylen)位;控制所述加减法运算器将左 移后的X与Y高位对齐相加,将和值的后N2位去除作为更新后的X并保存,将第一变量R 与左移后的第二变量S低位对齐并相减,得到的差值作为更新后的第一变量R,其中,N2为: X最高位的0前的符号位的个数N3与狂len-Ylen)之间的最小值。
[0087] 在本发明实施例中,在Xsign = 1,即X为负数时,移位器202将X左移N2位至最 高位为1,移位后X位长多出Y的低位结果直接写入到存储器204,与Y位长相等的高位结 果输入至加减法运算器203。加减法运算器203将X的高位部分与Y相加,并将运算结果 写入至存储器204。在加减法运算器203进行减法运算的过程中出现进位时,X的符号位取 反,否则X的符号位不变。将高位运算的结果与移出的低位结合,并取出低位中的后N2位, 作为更新后的X。 阳0蝴例如,Χ = -10111,Υ= IIOIdX最高位的0前的符号位的个数N3 = 1,狂len-Ylen) =1,因此N2= 1。将X送入至移位器202,将X左移1位,移位后Χ = 01110,移位后的X位 长多出Υ的低位结果为0,将0写入到存储器204中。与Υ位长相等的X的高位结果为-0111, 将0111送入至加减法器203与Υ相加,在相加的过程中产生了进位,X符号位取反,得到的 高位运算的结果为0100,将高位运算的结果与移出的低位结合,得到的值为01000,去除低 位中的后1位0,得到的值作为更新后的X,即更新后的X = 0100。
[0089] 在本发明一实施例中,控制器201从存储器204中读取第一变量R和第二变量S, 将第二变量S送入至移位器202。移位器202将第二变量S左移狂len-Ylen)位,加减法运 算器203将第一变量R与左移后的第二变量S低位对齐相减,得到的差值作为更新后的第 一变量R。
[0090] 在本发明另一实施例中,在计算X模Y的过程中,预先设置第Ξ变量QS,第Ξ变量 QS存储在存储器204中,且第Ξ变量QS的初始值为0。在每次X左移N1位与Y高位对齐 相加之后,从存储器204中读取第Ξ变量QS W及第二变量S。将第Ξ变量QS送入至移位 器202中左移N1位,将移位结果送入至加减法运算器203。加减法运算器203将左移后的 第=变量QS与第二变量S低位对齐并相减,得到的差值作为更新后的第Ξ变量QS。在X模 Y计算结束时,从存储器204中读取第一变量R和更新后的第Ξ变量QS,送入至加减法运算 器203中,将第一变量R与更新后的第Ξ变量QS低位对齐相减,得到的差值作为更新后的 第一变量R。
[0091] 在Xlen《Ylen,且Ysign = 0时,控制所述移位器将Y左移Ml位至最高位为1, 低位补Ml位无效0,控制所述移位器将所述第一变量R左移(Ylen-Xlen)位;控制所述加减 法运算器将左移后的Y与X高位对齐相减,将差值的后N1位去除作为更新后的Y并保存, 将第二变量S与左移后的第一变量R低位对齐并相加,得到的和值作为更新后的第二变量 S。
[0092] 在Xlen《Ylen,且Ysign = 1时,控制所述移位器将Y左移M2位,低位补M2位无 效0,控制所述移位器将所述第一变量R左移(Ylen-Xlen)位;控制所述加减法运算器将左 移后的Y与X高位对齐相加,将和值的后M2位去除作为更新后的Y并保存,将第二变量S 与左移后的第一变量R低位对齐并相减,得到的差值作为更新后的第二变量S,其中,M2为: Y最高位的0前的符号位的个数M3与灯len-Xlen)之间的最小值。
[0093] 在本发明实施例中,在Xlen《Ylen时,模逆运算的过程可W参照本发明上述实施 例中提供的Xlen > Ylen时的过程,此处不做寶述。
[0094] 在本发明实施例中,可W通过控制器201控制移位器202和加减法运算器203循 环执行上述操作,直至得到更新后的X和更新后的Y中的一个值为0时,结束模逆运算。 阳0巧]在所述控制器得到的更新后的X = 0且更新后的Y = 1时,所述模逆运算的结果 为更新后的S ;在更新后的X = 1且更新后的Y = 0时,所述模逆运算的结果为X的初始值 与更新后的R之差;在更新后的X与更新后的Y其中之一等于0而另一个不等于1时,说明 X和Y不互素,所述模逆运算的结果不存在。
[0096] 本领域普通技术人员可W理解上述实施例的各种方法中的全部或部分步骤是可 W通过程序来指示相关的硬件来完成,该程序可W存储于一计算机可读存储介质中,存储 介质可W包括:ROM、RAM、磁盘或光盘等。
[0097] 虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本 发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当W权利要求所 限定的范围为准。
【主权项】
1. 一种模逆运算方法,用于计算z = Y kodX,其中Z为所述模逆运算的结果,X为第一 操作数,Y为第二操作数,其特征在于,包括: 获取第一操作数X的二进制位长xien以及第二操作数Y的二进制位长Hen ;初始化 第一变量R与第二变量S ; 当XIen彡Hen时,计算X模Y : 在X为正数时,将X左移N1位至最高位为1,低位补N1位无效0,将左移后的X与Y高 位对齐相减,将差值的后N1位去除,作为更新后的X,将第一变量R与左移OClen-Ylen)位 的第二变量S低位对齐相加之和作为更新后的第一变量R ; 在X为负数时,将X左移N2位,低位补N2位无效0,将左移后的X与Y高位对齐相加, 将和值的后N2位去除,作为更新后的X,将第一变量R与左移OClen-Ylen)位的第二变量S 低位对齐并相减,得到的差值作为更新后的第一变量R,其中,N2为:X最高位的0前的符号 位的个数N3与(Xlen-Ylen)之间的最小值; 当Xlen < Hen时,计算Y模X : 在Y为正数时,将Y左移Ml位至最高位为1,低位补Ml位无效0,将左移后的Y与X高 位对齐相减,将差值的后Ml位去除,作为更新后的Y ;将第二变量S与左移(Ylen-Xlen)位 的第一变量R低位对齐相加之和作为更新后的第二变量S ; 在Y为负数时,将Y左移M2位,低位补M2位无效0,将左移后的Y与X高位对齐相加, 将和值的后M2位去除,作为更新后的Y ;将第二变量S与左移(Hen-Xlen)位的第一变量 R低位对齐并相减,得到的差值作为更新后的第二变量S,其中,M2为:Y最高位的0前的符 号位的个数M3与(Ylen-Xlen)之间的最小值; 在更新后的X = 〇且更新后的Y = 1时,所述模逆运算的结果为更新后的第二变量S ; 在更新后的X = 1且更新后的Y = 〇时,所述模逆运算的结果为X的初始值与更新后的第 一变量R之差;在更新后的X与更新后的Y其中之一等于0而另一个不等于1时,所述模逆 运算的结果不存在。2. -种模逆运算器,用于计算Z = Y bod X,其中Z为所述模逆运算的结果,X为第一 操作数,Y为第二操作数,其特征在于,包括:控制器、移位器、加减法运算器以及存储器,其 中: 所述存储器,适于存储第一操作数X、第二操作数Y、第一变量R以及第二变量S ; 所述控制器,适于保存并更新所述第一操作数X对应的二进制位长)(len以及符号位 Xsign、所述第二操作数Y对应的二进制位长Hen以及符号位Ysign,控制所述移位器以及 所述加减法运算器实现X模Y以及Y模X,包括: 在)(len多Ylen,且Xsign = 0时,控制所述移位器将X左移N1位至最高位为1,低位 补N1位无效0,控制所述移位器将所述第二变量S左移(Xlen-Ylen)位;控制所述加减法 运算器将左移后的X与Y高位对齐相减,将差值的后N1位去除作为更新后的X并保存,将 第一变量R与左移后的第二变量S低位对齐并相加,得到的和值作为更新后的第一变量R ; 在)(len多Ylen,且Xsign = 1时,控制所述移位器将X左移N2位,低位补N2位无效 〇,控制所述移位器将所述第二变量S左移(Xlen-Ylen)位;控制所述加减法运算器将左移 后的X与Y高位对齐相加,将和值的后N2位去除作为更新后的X并保存,将第一变量R与 左移后的第二变量S低位对齐并相减,得到的差值作为更新后的第一变量R ;其中,N2为:X 最高位的0前的符号位的个数N3与(Xlen-Ylen)之间的最小值; 在)(len < Ylen,且Ysign = 0时,控制所述移位器将Y左移Ml位至最高位为1,低位 补Ml位无效0,控制所述移位器将所述第一变量R左移(Ylen-Xlen)位;控制所述加减法 运算器将左移后的Y与X高位对齐相减,将差值的后N1位去除作为更新后的Y并保存,将 第二变量S与左移后的第一变量R低位对齐并相加,得到的和值作为更新后的第二变量S ; 在)(len < Ylen,且Ysign = 1时,控制所述移位器将Y左移M2位,低位补M2位无效 〇,控制所述移位器将所述第一变量R左移(Ylen-Xlen)位;控制所述加减法运算器将左移 后的Y与X高位对齐相加,将和值的后M2位去除作为更新后的Y并保存,将第二变量S与 左移后的第一变量R低位对齐并相减,得到的差值作为更新后的第二变量S ;其中,M2为:Y 最高位的〇前的符号位的个数M3与(Ylen-Xlen)之间的最小值; 在所述控制器得到的更新后的X = 〇且更新后的Y = 1时,所述模逆运算的结果为更 新后的S ;在更新后的X = 1且更新后的Y = 0时,所述模逆运算的结果为X的初始值与更 新后的R之差;在更新后的X与更新后的Y其中之一等于0而另一个不等于1时,所述模逆 运算的结果不存在。
【文档编号】G06F7/72GK105988772SQ201510096948
【公开日】2016年10月5日
【申请日】2015年3月4日
【发明人】刘凯, 陆继承, 赵晓冬, 王宇
【申请人】上海复旦微电子集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1