欧几里得逆运算java_一种模逆运算方法及运算器与流程

本发明涉及模逆计算技术领域,更具体地说,涉及一种模逆运算方法及运算器。

背景技术:

模逆运算广泛应用在公钥密码体制中,例如,在RSA算法中的解密密钥生成时应用到模逆运算,模逆运算也可以用于椭圆曲线密码算法中的点加和倍点运算。

目前,求解模逆运算的方法主要包括模幂算法、扩展欧几里得算法、二进制扩展欧几里得算法等。模幂算法以费马小定理为基础,将模逆运算转换成模幂运算,但是模幂算法无法确定模逆结果是否存在。采用模乘器作为硬件运算单元,较为复杂且功耗较大。扩展欧几里得算法通过辗转相除计算最大公因子求解模逆,当最大公因子为非1整数时无法获取模逆的计算结果。采用除法器作为硬件运算单元,实现仍较为复杂。二进制扩展欧几里得算法将除法转换成移位和加减法,但是,在移位的过程中,操作数的权值发生了改变,最终运算结果中包含有2n(n为操作数的位长)项权重因子,去除权重因子需进行多次除2的操作,因此,要求模必须是奇数。现有的二进制扩展欧几里得算法方法在进行模逆运算时仍存在一定的限制,无法针对任意非零整数求模,并且计算过程较为复杂。

因此,现有技术亟待有很大的进步。

技术实现要素:

本发明要解决的技术问题在于,针对现有技术的上述的缺陷,提供一种模逆运算方法,已知正整数u、m,求u-1mod m,包括步骤:

S1、如果m为奇数,则n1=u,n2=m,标志位flag=0;否则m不为奇数:如果u为偶数,则u-1不存在,运算结束,如果u不为偶数,则n1 =m,n2=u,标志位flag=1;

S2、执行算法:

S21、n1=m,n2=u,s=0,t=1,k=0;

S22、while(n2>0)

如果n1为偶数,则n1=n1/2,t=2t,k=k+1;

否则如果n2为偶数,则n2=n2/2,s=2s,k=k+1;

否则如果n1>n2,那么n1=(n1-n2)/2,s=s+t,t=2t,k=k+1;

否则n2=(n2-n1)/2,t=s+t,s=2s,k=k+1;

S23、如果n1≠1,则u-1不存在,运算结束;

否则m=-s(mod m)

S3、如果n1-1不存在,则运算结束;

S4、如果标志位flag=0,则u-1=n1-1;否则标志位flag=1,

相应地,本发明还提供了一种模逆运算的运算器,包括加法器、减法器、存储器、控制器;

所述控制器用于判断且设置数值,

S1、如果m为奇数,则n1=u,n2=m,标志位flag=0;否则m不为奇数:如果u为偶数,则u-1不存在,运算结束,如果u不为偶数,则n1 =m,n2=u,标志位flag=1;

S21、n1=m,n2=u,s=0,t=1,k=0;

S22、while(n2>0)

如果n1为偶数,则n1=n1/2,t=2t,k=k+1;

否则如果n2为偶数,则n2=n2/2,s=2s,k=k+1;

否则如果n1>n2,那么n1=(n1-n2)/2,s=s+t,t=2t,k=k+1;

否则n2=(n2-n1)/2,t=s+t,s=2s,k=k+1;

S23、如果n1≠1,则u-1不存在,运算结束;

否则m=-s(mod m)

S3、如果n1-1不存在,则运算结束;

S4、如果标志位flag=0,则u-1=n1-1;否则标志位flag=1,

所述减法器执行减法操作;

所述加法器执行加分操作;

所述存储器用于存储参与计算的数据、标志位flag的值,计算结果值。

实施本发明的模逆运算方法及运算器,具有以下有益效果:该算法只需要增加一个标志位,和最多一次乘法、两次减法运算,能大大提高运算速度,在硬件实现上,具有通用性、高效性特点;相比于现有的二进制扩展欧几里得算法,不需要再对运算结果进行权重因子的消除操作,并且可以不限定模必须为奇数,可以实现模为任意非零整数的模逆运算,并提高模逆运算的计算效率,降低硬件功耗。

具体实施方式

现有的二进制扩展欧几里得算法将除法转换成移位和加减法,但是,在移位的过程中,操作数的权值发生了改变,最终运算结果中包含有2n(n为操作数的位长)项权重因子,去除权重因子需进行多次除2的操作,因此,要求模必须是奇数。但是,现有的二进制扩展欧几里得算法方法在进行模逆运算时仍存在一定的限制,无法针对任意非零整数求模,并且计算过程较为复杂。

本发明提出了一种模逆运算,

已知正整数u、m,求u-1mod m,其特征在于,包括步骤:

S1、如果m为奇数,则n1=u,n2=m,标志位flag=0;否则m不为奇数:如果u为偶数,则u-1不存在,运算结束,如果u不为偶数,则n1 =m,n2=u,标志位flag=1;

S2、执行算法:

S21、n1=m,n2=u,s=0,t=1,k=0;

S22、while(n2>0)

如果n1为偶数,则n1=n1/2,t=2t,k=k+1;

否则如果n2为偶数,则n2=n2/2,s=2s,k=k+1;

否则如果n1>n2,那么n1=(n1-n2)/2,s=s+t,t=2t,k=k+1;

否则n2=(n2-n1)/2,t=s+t,s=2s,k=k+1;

S23、如果n1≠1,则u-1不存在,运算结束;

否则m=-s(mod m)

S3、如果n1-1不存在,则运算结束;

S4、如果标志位flag=0,则u-1=n1-1;否则标志位flag=1,

相应地,本发明还公开了一种模逆运算器,包括加法器、减法器、存储器、控制器;

所述控制器用于判断且设置数值,

S1、如果m为奇数,则n1=u,n2=m,标志位flag=0;否则m不为奇数:如果u为偶数,则u-1不存在,运算结束,如果u不为偶数,则n1 =m,n2=u,标志位flag=1;

S21、n1=m,n2=u,s=0,t=1,k=0;

S22、while(n2>0)

如果n1为偶数,则n1=n1/2,t=2t,k=k+1;

否则如果n2为偶数,则n2=n2/2,s=2s,k=k+1;

否则如果n1>n2,那么n1=(n1-n2)/2,s=s+t,t=2t,k=k+1;

否则n2=(n2-n1)/2,t=s+t,s=2s,k=k+1;

S23、如果n1≠1,则u-1不存在,运算结束;

否则m=-s(mod m)

S3、如果n1-1不存在,则运算结束;

S4、如果标志位flag=0,则u-1=n1-1;否则标志位flag=1,

所述减法器执行减法操作;所述加法器执行加分操作;所述存储器用于存储参与计算的数据、标志位flag的值,计算结果值。

通过利用标志位区分不同的情况,从而更准确的计算出数据结果。

本发明通过以上实施例的设计,可以做到该算法只需要增加一个标志位,和最多一次乘法、两次减法运算,能大大提高运算速度,在硬件实现上,具有通用性、高效性特点;相比于现有的二进制扩展欧几里得算法,不需要再对运算结果进行权重因子的消除操作,并且可以不限定模必须为奇数,可以实现模为任意非零整数的模逆运算,并提高模逆运算的计算效率,降低硬件功耗。

本发明是根据特定实施例进行描述的,但本领域的技术人员应明白在不脱离本发明范围时,可进行各种变化和等同替换。此外,为适应本发明技术的特定场合,可对本发明进行诸多修改而不脱离其保护范围。因此,本发明并不限于在此公开的特定实施例,而包括所有落入到权利要求保护范围的实施例。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值