模逆运算器制造技术

技术编号:13790680 阅读:29 留言:0更新日期:2016-10-05 22:40
一种模逆运算方法及运算器,用于计算Z=Y

【技术实现步骤摘要】

本专利技术涉及信息安全领域,尤其涉及一种模逆运算方法及运算器。
技术介绍
模逆运算广泛应用在公钥密码体制中,例如,在RSA算法中的解密密钥生成时应用到模逆运算,模逆运算也可以用于椭圆曲线密码算法中的点加和倍点运算。目前,求解模逆运算的方法主要包括模幂算法、扩展欧几里得算法、二进制扩展欧几里得算法等。模幂算法以费马小定理为基础,将模逆运算转换成模幂运算,但是模幂算法无法确定模逆结果是否存在。采用模乘器作为硬件运算单元,较为复杂且功耗较大。扩展欧几里得算法通过辗转相除计算最大公因子求解模逆,当最大公因子为非1整数时无法获取模逆的计算结果。采用除法器作为硬件运算单元,实现仍较为复杂。二进制扩展欧几里得算法将除法转换成移位和加减法,但是,在移位的过程中,操作数的权值发生了改变,最终运算结果中包含有2n(n为操作数的位长)项权重因子,去除权重因子需进行多次除2的操作,因此,要求模必须是奇数。现有的二进制扩展欧几里得算法方法在进行模逆运算时仍存在一定的限制,无法针对任意非零整数求模,并且计算过程较为复杂。
技术实现思路
本专利技术实施例解决的问题是如何实现对任意非零整数求模,并提高模逆运算的计算效率,降低硬件功耗。为解决上述问题,本专利技术实施例提供一种模逆运算方法,用于计算Z=Y-1
modX,其中Z为所述模逆运算的结果,X为第一操作数,Y为第二操作数,包括:获取第一操作数X的二进制位长Xlen以及第二操作数Y的二进制位长Ylen;初始化第一变量R与第二变量S;当Xlen≥Ylen时,计算X模Y:在X为正数时,将X左移N1位至最高位为1,低位补N1位无效0,将左移后的X与Y高位对齐相减,将差值的后N1位去除,作为更新后的X,将第一变量R与左移(Xlen-Ylen)位的第二变量S低位对齐相加之和作为更新后的第一变量R;在X为负数时,将X左移N2位,低位补N2位无效0,将左移后的X与Y高位对齐相加,将和值的后N2位去除,作为更新后的X,将第一变量R与左移(Xlen-Ylen)位的第二变量S低位对齐并相减,得到的差值作为更新后的第一变量R;其中,N2为:X最高位的0前的符号位的个数N3与(Xlen-Ylen)之间的最小值;当Xlen≤Ylen时,计算Y模X:在Y为正数时,将Y左移M1位至最高位为1,低位补M1位无效0,将左移后的Y与X高位对齐相减,将差值的后M1位去除,作为更新后的Y;将第二变量S与左移(Ylen-Xlen)位的第一变量R低位对齐相加之和作为更新后的第二变量S;在Y为负数时,将Y左移M2位,低位补M2位无效0,将左移后的Y与X高位对齐相加,将和值的后M2位去除,作为更新后的Y;将第二变量S与左移(Ylen-Xlen)位的第一变量R低位对齐并相减,得到的差值作为更新后的第二变量S;其中,M2为:Y最高位的0前的符号位的个数M3与(Ylen-Xlen)之间的最小值;在更新后的X=0且更新后的Y=1时,所述模逆运算的结果为更新后的第二变量S;在更新后的X=1且更新后的Y=0时,所述模逆运算的结果为X的初始值与更新后的第一变量R之差;在更新后的X与更新后的Y其中之一等于0而另一个不等于1时,所述模逆运算的结果不存在。本专利技术实施例还提供了一种模逆运算器,用于计算Z=Y-1mod X,其中Z为所述模逆运算的结果,X为第一操作数,Y为第二操作数,包括:控制器、移位器、加减法运算器以及存储器,其中:获取第一操作数X和第二操作数Y,以及第一操作数X的二进制位长Xlen、第二操作数Y的二进制位长Ylen;初始化第一变量R与第二变量S;当Xlen≥Ylen时,计算X模Y:在X为正数时,将X左移N1位至最高位为1,低位补N1位无效0,将左移后的X与Y高位对齐相减,将差值的后N1位去除,作为更新后的X,将第一变量R与左移(Xlen-Ylen)位的第二变量S低位对齐相加之和作为更新后的第一变量R;在X为负数时,将X左移N2位,低位补N2位无效0,将左移后的X与Y高位对齐相加,将和值的后N2位去除,作为更新后的X,将第一变量R与左移(Xlen-Ylen)位的第二变量S低位对齐并相减,得到的差值作为更新后的第一变量R;其中,N2为:X最高位的0前的符号位的个数N3与(Xlen-Ylen)之间的最小值;当Xlen≤Ylen时,计算Y模X:在Y为正数时,将Y左移M1位至最高位为1,低位补M1位无效0,将左移后的Y与X高位对齐相减,将差值的后M1位去除,作为更新后的Y;将第二变量S与左移(Ylen-Xlen)位的第一变量R低位对齐相加之和作为更新后的第二变量S;在Y为负数时,将Y左移M2位,低位补M2位无效0,将左移后的Y与X高位对齐相加,将和值的后M2位去除,作为更新后的Y;将第二变量S与左移(Ylen-Xlen)位的第一变量R低位对齐并相减,得到的差值作为更新后的第二变量S;其中,M2为:Y最高位的0前的符号位的个数M3与(Ylen-Xlen)之间的最小值;在更新后的X=0且更新后的Y=1时,所述模逆运算的结果为更新后的第二变量S;在更新后的X=1且更新后的Y=0时,所述模逆运算的结果为X的初始值与更新后的第一变量R之差;在更新后的X与更新后的Y其中之一等
于0而另一个不等于1时,所述模逆运算的结果不存在。与现有技术相比,本专利技术实施例的技术方案具有以下优点:在第一操作数X位长大于第二操作数Y时,X左移时可以消除冗余的符号位,通过变量Xlen记录X的实时位长,X的权值没有发生变化。R和S的运算遵循低位对齐的运算方法,R无左移操作,即R的权值也没有发生改变。类似的,在Y位长大于X时,Y左移时可以消除冗余的符号位,通过变量Ylen记录Y的实时位长,Y的权值没有发生变化。R和S的运算遵循低位对齐的运算方法,S无左移操作,即S的权值也没有发生改变。即在整个模逆运算过程中,运算的结果不包括权重因子,相比于现有的二进制扩展欧几里得算法,不需要再对运算结果进行权重因子的消除操作,并且可以不限定模必须为奇数,可以实现模为任意非零整数的模逆运算,并提高模逆运算的计算效率,降低硬件功耗。附图说明图1是本专利技术实施例中的一种模逆运算方法的流程图;图2是本专利技术实施例中的一种模逆运算器的结构示意图。具体实施方式现有的二进制扩展欧几里得算法将除法转换成移位和加减法,但是,在移位的过程中,操作数的权值发生了改变,最终运算结果中包含有2n(n为操作数的位长)项权重因子,去除权重因子需进行多次除2的操作,因此,要求模必须是奇数。但是,现有的二进制扩展欧几里得算法方法在进行模逆运算时仍存在一定的限制,无法针对任意非零整数求模,并且计算过程较为复杂。在本专利技术实施例中,在第一操作数X位长大于第二操作数Y时,X左移时可以消除冗余的符号位,通过变量Xlen记录X的实时位长,X的权值没有发生变化。R和S的运算遵循低位对齐的运算方法,R无左移操作,即R的权值也没有发生改变。类似的,在Y位长大于X时,Y左移时可以消除冗余的符号位,通过变量Ylen记录Y的实时位长,Y的权值没有发生变化。R和S的运算遵循低位对齐的运算方法,S无左移操作,即S的权值也没有发生改变。在整个模逆运算过程中,运算的结果不包括权重因子,相比于现有的二
进制扩展欧几里得算法,不需要再对运算本文档来自技高网
...

【技术保护点】
一种模逆运算方法,用于计算Z=Y‑1modX,其中Z为所述模逆运算的结果,X为第一操作数,Y为第二操作数,其特征在于,包括:获取第一操作数X的二进制位长Xlen以及第二操作数Y的二进制位长Ylen;初始化第一变量R与第二变量S;当Xlen≥Ylen时,计算X模Y:在X为正数时,将X左移N1位至最高位为1,低位补N1位无效0,将左移后的X与Y高位对齐相减,将差值的后N1位去除,作为更新后的X,将第一变量R与左移(Xlen‑Ylen)位的第二变量S低位对齐相加之和作为更新后的第一变量R;在X为负数时,将X左移N2位,低位补N2位无效0,将左移后的X与Y高位对齐相加,将和值的后N2位去除,作为更新后的X,将第一变量R与左移(Xlen‑Ylen)位的第二变量S低位对齐并相减,得到的差值作为更新后的第一变量R,其中,N2为:X最高位的0前的符号位的个数N3与(Xlen‑Ylen)之间的最小值;当Xlen≤Ylen时,计算Y模X:在Y为正数时,将Y左移M1位至最高位为1,低位补M1位无效0,将左移后的Y与X高位对齐相减,将差值的后M1位去除,作为更新后的Y;将第二变量S与左移(Ylen‑Xlen)位的第一变量R低位对齐相加之和作为更新后的第二变量S;在Y为负数时,将Y左移M2位,低位补M2位无效0,将左移后的Y与X高位对齐相加,将和值的后M2位去除,作为更新后的Y;将第二变量S与左移(Ylen‑Xlen)位的第一变量R低位对齐并相减,得到的差值作为更新后的第二变量S,其中,M2为:Y最高位的0前的符号位的个数M3与(Ylen‑Xlen)之间的最小值;在更新后的X=0且更新后的Y=1时,所述模逆运算的结果为更新后的第二变量S;在更新后的X=1且更新后的Y=0时,所述模逆运算的结果为X的初始值与更新后的第一变量R之差;在更新后的X与更新后的Y其中之一等于0而另一个不等于1时,所述模逆运算的结果不存在。...

【技术特征摘要】
1.一种模逆运算方法,用于计算Z=Y-1modX,其中Z为所述模逆运算的结果,X为第一操作数,Y为第二操作数,其特征在于,包括:获取第一操作数X的二进制位长Xlen以及第二操作数Y的二进制位长Ylen;初始化第一变量R与第二变量S;当Xlen≥Ylen时,计算X模Y:在X为正数时,将X左移N1位至最高位为1,低位补N1位无效0,将左移后的X与Y高位对齐相减,将差值的后N1位去除,作为更新后的X,将第一变量R与左移(Xlen-Ylen)位的第二变量S低位对齐相加之和作为更新后的第一变量R;在X为负数时,将X左移N2位,低位补N2位无效0,将左移后的X与Y高位对齐相加,将和值的后N2位去除,作为更新后的X,将第一变量R与左移(Xlen-Ylen)位的第二变量S低位对齐并相减,得到的差值作为更新后的第一变量R,其中,N2为:X最高位的0前的符号位的个数N3与(Xlen-Ylen)之间的最小值;当Xlen≤Ylen时,计算Y模X:在Y为正数时,将Y左移M1位至最高位为1,低位补M1位无效0,将左移后的Y与X高位对齐相减,将差值的后M1位去除,作为更新后的Y;将第二变量S与左移(Ylen-Xlen)位的第一变量R低位对齐相加之和作为更新后的第二变量S;在Y为负数时,将Y左移M2位,低位补M2位无效0,将左移后的Y与X高位对齐相加,将和值的后M2位去除,作为更新后的Y;将第二变量S与左移(Ylen-Xlen)位的第一变量R低位对齐并相减,得到的差值作为更新后的第二变量S,其中,M2为:Y最高位的0前的符号位的个数M3与(Ylen-Xlen)之间的最小值;在更新后的X=0且更新后的Y=1时,所述模逆运算的结果为更新后的第二变量S;在更新后的X=1且更新后的Y=0时,所述模逆运算的结果为X的初始值与更新后的第一变量R之差;在更新后的X与更新后的Y其中之一等于0而另一个不等于1时,所述模逆运算的结果不存在。2.一种模逆运算器,用于计算Z=Y-1mod X,其中Z为所述模逆运算的结果,X为第一操作数,Y为第二操作数,其特征在于,包括:控制器、移位器、加减法运算器以及存储器,其中:所述存储器,适于存储第一操作数X、第二操作数Y、第一变量R以及第二变量S;所述控制器,适于保存并更新所述第一操作数X对应的二进制...

【专利技术属性】
技术研发人员:刘凯陆继承赵晓冬王宇
申请(专利权)人:上海复旦微电子集团股份有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1