一种元素的模逆计算方法及装置.pdf

上传人:t**** 文档编号:623336 上传时间:2018-02-26 格式:PDF 页数:10 大小:3.05MB
返回 下载 相关 举报
摘要
申请专利号:

CN201310144914.0

申请日:

2013.04.24

公开号:

CN104123431A

公开日:

2014.10.29

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 19/00申请日:20130424|||公开

IPC分类号:

G06F19/00(2011.01)I

主分类号:

G06F19/00

申请人:

国民技术股份有限公司

发明人:

黄洋

地址:

518057 广东省深圳市南山区高新技术产业园区深圳软件园3栋301、302

优先权:

专利代理机构:

深圳中一专利商标事务所 44237

代理人:

梁珣

PDF下载: PDF下载
内容摘要

本发明适用于计算机及通信技术领域,提供了一种元素的模逆计算方法及装置,该方法包括:获取临时变量X1、X2和递减变量u、v的初始值,其中,X1、X2的初始值分别为1、0;递减变量u、v的初始值分别为a、P0;对临时变量X1、X2和递减变量u、v进行迭代计算,其中迭代过程中满足:a*x1=u(mod P0),a*x2=v(mod P0);在迭代计算中每完成一次迭代,判断u、v中是否有一个为1,如u、v中没有一个是1,继续迭代计算;如u、v中有一个是1,结束迭代计算;在迭代计算结束后,如u为1,则将X1赋值给X,如v为1,则将X2赋值给X;当K=0时,判断X是否大于零,如X大于零,X即为a关于P的模逆。本发明提供的技术方案具有计算速度快,计算资源需求少的优点。

权利要求书

1.  一种元素的模逆计算方法,其特征在于,所述方法包括:
获取临时变量X1、X2和递减变量u、v的初始值,其中,X1、X2的初始值分别为1、0;递减变量u、v的初始值分别为a、P0;
对临时变量X1、X2和递减变量u、v进行迭代计算,其中迭代过程中满足:a*x1=u(mod P0),a*x2=v(mod P0);其中,a为元素,当a关于P的逆元存在时,X为其逆元,即满足a*X=1(mod P);P为模数,P=P0*2k,P0为奇数,K为2的指数;
在迭代计算中每完成一次迭代,判断u、v中是否有一个为1,如u、v中没有一个是1,继续迭代计算;如u、v中有一个是1,结束迭代计算;
在迭代计算结束后,如u为1,则将X1赋值给X,如v为1,则将X2赋值给X;
当K=0时,判断X是否大于零,如X大于零,X即为a关于P的模逆;如X小于零,X'=X+P0;其中X'为a关于P的模逆。

2.
  根据权利要求1所述的方法,其特征在于,所述对临时变量X1、X2和递减变量u、v进行迭代计算具体包括:
获取u最低字节尾数0的个数ZeroNum,决定本次迭代u右移位数,该u右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x1+n*P0的尾数有ZeroNum个0,对大数u,x1进行迭代更新,u=u>>ZeroNum,x1=(x1+n*P0)>>ZeroNum;
或获取v最低字节尾数0的个数ZeroNum,决定本次迭代v右移位数,该v右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x2+n*P0的尾数有ZeroNum个0,对大数v,x2进行迭代更新,v=v>>ZeroNum,x2=(x2+n*P0)>>ZeroNum。
或获取u—v最低字节尾数0的个数ZeroNum,决定本次迭代u右移位数, 该u右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x1+n*P0-x2的尾数有ZeroNum个0,对系数n做越界处理,保证|x1+n*P0-x2|<P0*2ZeroNum,对大数u,x1进行迭代更新,u=u>>ZeroNum,x1=(x1+n*P0-x2)>>ZeroNum。
或获取v—u最低字节尾数0的个数ZeroNum,决定本次迭代v右移位数,该v右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x2+n*P0-x1的尾数有ZeroNum个0。对系数n做越界处理,保证|x2+n*P0-x1|<P0*2ZeroNum,对大数v,x2进行迭代更新,v=v>>ZeroNum,x2=(x2+n*P0-x1)>>ZeroNum;
所述设定值为大于1的整数。

3.
  根据权利要求2所述的方法,其特征在于,所述方法还包括:
当K大于0时,获取k比特的TailInvA,满足a*TailInvA的最低k比特为00...01,选择合适的n,将X''=Y+nP0的最低k比特凑成与TailInvA一样,则X''为a关于P的模逆;其中Y为a关于P0的模逆。

4.
  一种元素的模逆计算装置,其特征在于,所述装置包括:
初始化单元,用于获取临时变量X1、X2和递减变量u、v的初始值,其中,X1、X2的初始值分别为1、0;递减变量u、v的初始值分别为a、P0;
奇数模逆计算单元,用于对临时变量X1、X2和递减变量u、v进行迭代计算,其中迭代过程中满足:a*x1=u(mod P0),a*x2=v (mod P0);其中,a为元素,当a关于P的逆元存在时,X为其逆元,即满足a*x=1(mod P);P为模数,P=P0*2k;P0为奇数,K为2的指数;
模逆处理单元,用于在迭代计算中每完成一次迭代,判断u、v中是否有一个为1,如u、v中没有一个是1,继续迭代计算;如u、v中有一个是1,结束迭代计算;在迭代计算结束后,如u为1,则将X1赋值给X,如v为1,则将X2赋值给X;当K=0时,判断X是否大于零,如X大于零,X即为a关 于P的模逆;如X小于零,X'=X+P0;其中X'为a关于P的模逆。

5.
  根据权利要求4所述的装置,其特征在于,所述奇数模逆计算单元具体用于:
获取u最低字节尾数0的个数ZeroNum,决定本次迭代u右移位数,该u右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x1+n*P0的尾数有ZeroNum个0,对大数u,x1进行迭代更新,u=u>>ZeroNum,x1=(x1+n*P0)>>ZeroNum;
或获取v最低字节尾数0的个数ZeroNum,决定本次迭代v右移位数,该v右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x2+n*P0的尾数有ZeroNum个0,对大数v,x2进行迭代更新,v=v>>ZeroNum,x2=(x2+n*P0)>>ZeroNum。
或获取u—v最低字节尾数0的个数ZeroNum,决定本次迭代u右移位数,该u右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x1+n*P0-x2的尾数有ZeroNum个0,对系数n做越界处理,保证|x1+n*P0-x2|<P0*2ZeroNum,对大数u,x1进行迭代更新,u=u>>ZeroNum,x1=(x1+n*P0-x2)>>ZeroNum。
或获取v—u最低字节尾数0的个数ZeroNum,决定本次迭代v右移位数,该v右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x2+n*P0-x1的尾数有ZeroNum个0。对系数n做越界处理,保证|x2+n*P0-x1|<P0*2ZeroNum,对大数v,x2进行迭代更新,v=v>>ZeroNum,x2=(x2+n*P0-x1)>>ZeroNum;
所述设定值为大于1的整数。

6.
  根据权利要求5所述的装置,其特征在于,所述装置还包括:
偶数模逆计算单元,用于当K大于0时,获取k比特的TailInvA,满足 a*TailInvA的最低k比特为00...01,选择合适的n,将X''=Y+nP0的最低k比特凑成与TailInvA一样,则X''为a关于P的模逆;其中Y为a关于P0的模逆。

7.
  根据权利要求5或6任一所述的装置,其特征在于,所述模逆处理单元包括:控制单元、多个存储单元和算术运算单元;其中,所述控制单元,用于对模逆计算过程中整个流程的控制;
所述存储单元,用于存储大数中间变量;
所述算术运算单元,用于处理模逆运算中的32位比特级所有加法。

说明书

一种元素的模逆计算方法及装置
技术领域
本发明属于计算机及通信电子领域,尤其涉及一种元素的模逆计算方法及装置。
背景技术
随着计算机网络技术和通信技术的发展,对元素求其模逆的问题应用越来越广泛。譬如,RSA算法中的密钥的产生,椭圆曲线公钥密码系统和数字签名方案中,在选择仿射坐标系的情况下,也需要频繁地用到模逆运算。目前,通常元素的模逆计算方法一般有三种:费马定理方法,蒙哥马利模逆方法和二进制扩展欧几里得算法。费马定理不适合模逆不存在的情形,二进制扩展欧几里得算法是目前已公布的速度最快的算法。但是二进制扩展欧几里得算法的速度仍然很慢,且资源需求较大。
发明内容
本发明实施例的目的在于提供一种元素的模逆计算方法,旨在解决通过现有技术中计算速度慢,资源需求大的问题。
本发明实施例是这样实现的,一种元素的模逆计算方法,所述方法包括:
获取临时变量X1、X2和递减变量u、v的初始值,其中,X1、X2的初始值分别为1、0;递减变量u、v的初始值分别为a、P0;
对临时变量X1、X2和递减变量u、v进行迭代计算,其中迭代过程中满足:a*x1=u(mod P0),a*x2=v(mod P0);其中,a为元素,当a关于P的逆元存在时,X为其逆元,即满足a*x=1(mod P),;P为模数,P=P0*2k;P0为奇数,K为2的指数;
在迭代计算中每完成一次迭代,判断u、v中是否有一个为1,如u、v 中没有一个是1,继续迭代计算;如u、v中有一个是1,结束迭代计算;
在迭代计算结束后,如u为1,则将X1赋值给X,如v为1,则将X2赋值给X;
当K=0时,判断X是否大于零,如X大于零,X即为a关于P的模逆;如X小于零,X'=X+P0;其中X'为a关于P的模逆。
可选的,所述对临时变量X1、X2和递减变量u、v进行迭代计算具体包括:
获取u最低字节尾数0的个数ZeroNum,决定本次迭代u右移位数,该u右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x1+n*P0的尾数有ZeroNum个0,对大数u,x1进行迭代更新,u=u>>ZeroNum,x1=(x1+n*P0)>>ZeroNum;
或获取v最低字节尾数0的个数ZeroNum,决定本次迭代v右移位数,该v右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x2+n*P0的尾数有ZeroNum个0,对大数v,x2进行迭代更新,v=v>>ZeroNum,x2=(x2+n*P0)>>ZeroNum。
或获取u—v最低字节尾数0的个数ZeroNum,决定本次迭代u右移位数,该u右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x1+n*P0-x2的尾数有ZeroNum个0,对系数n做越界处理,保证|x1+n*P0-x2|<P0*2ZeroNum,对大数u,x1进行迭代更新,u=u>>ZeroNum,x1=(x1+n*P0-x2)>>ZeroNum。
或获取v—u最低字节尾数0的个数ZeroNum,决定本次迭代v右移位数,该v右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x2+n*P0-x1的尾数有ZeroNum个0。对系数n做越界处理,保证|x2+n*P0-x1|<P0*2ZeroNum,对大数v,x2进行迭代更新,v=v>>ZeroNum,x2=(x2+n*P0-x1)>>ZeroNum。
可选的,所述方法还包括:
当K大于0时,获取k比特的TailInvA,满足a*TailInvA的最低k比特为00...01,选择合适的n,将X''=Y+nP0的最低k比特凑成与TailInvA一样,则X''为a关于P的模逆;其中Y为a关于P0的模逆;
另一方面,提供一种元素的模逆计算装置,所述装置包括:
初始化单元,用于获取临时变量X1、X2和递减变量u、v的初始值,其中,X1、X2的初始值分别为1、0;递减变量u、v的初始值分别为a、P0;
奇数模逆计算单元,用于对临时变量X1、X2和递减变量u、v进行迭代计算,其中迭代过程中满足:a*x1=u(mod P0),a*x2=v(mod P0);其中,a为元素,当a关于P的逆元存在时,X为其逆元,即满足a*x=1(mod P);P为模数,P=P0*2k;P0为奇数,K为2的指数;
模逆处理单元,用于在迭代计算中每完成一次迭代,判断u、v中是否有一个为1,如u、v中没有一个是1,继续迭代计算;如u、v中有一个是1,结束迭代计算;在迭代计算结束后,如u为1,则将X1赋值给X,如v为1,则将X2赋值给X;当K=0时,判断X是否大于零,如X大于零,X即为a关于P的模逆;如X小于零,X'=X+P0;其中X'为a关于P的模逆。
可选的,所述奇数模逆计算单元具体用于:
获取u最低字节尾数0的个数ZeroNum,决定本次迭代u右移位数,该u右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x1+n*P0的尾数有ZeroNum个0,对大数u,x1进行迭代更新,u=u>>ZeroNum,x1=(x1+n*P0)>>ZeroNum;
或获取v最低字节尾数0的个数ZeroNum,决定本次迭代v右移位数,该v右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x2+n*P0的尾数有ZeroNum个0,对大数v,x2进行迭代更新, v=v>>ZeroNum,x2=(x2+n*P0)>>ZeroNum。
或获取u—v最低字节尾数0的个数ZeroNum,决定本次迭代u右移位数,该u右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x1+n*P0-x2的尾数有ZeroNum个0,对系数n做越界处理,保证|x1+n*P0-x2|<P0*2ZeroNum,对大数u,x1进行迭代更新,u=u>>ZeroNum,x1=(x1+n*P0-x2)>>ZeroNum。
或获取v—u最低字节尾数0的个数ZeroNum,决定本次迭代v右移位数,该v右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x2+n*P0-x1的尾数有ZeroNum个0。对系数n做越界处理,保证|x2+n*P0-x1|<P0*2ZeroNum,对大数v,x2进行迭代更新,v=v>>ZeroNum,x2=(x2+n*P0-x1)>>ZeroNum。
可选的,所述装置还包括:
偶数模逆计算单元,用于当K大于0时,获取k比特的TailInvA,满足a*TailInvA的最低k比特为00...01,选择合适的n,将X''=Y+nP0的最低k比特凑成与TailInvA一样,则X''为a关于P的模逆;其中Y为a关于P0的模逆;
本发明实施例与现有技术相比,有益效果在于:本发明的技术方案的计算速度比通常的算法的速度快了接近一倍,当P为偶数时,资源需求上少了两个大数变量,所以其具有计算速度快,资源需求小的优点。
附图说明
图1是本发明实施例提供的一种元素的模逆计算方法的流程图;
图2是本发明实施例提供的一种元素的模逆计算装置的结构图;
图3是本发明实施例提供的模逆处理单元的硬件结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明具体实施方式提供一种元素的模逆计算方法,该方法如图1所示,包括:
101、获取临时变量X1、X2和递减变量u、v的初始值,其中,X1、X2的初始值分别为1、0;递减变量u、v的初始值分别为a、P0;
102、对临时变量X1、X2和递减变量u、v进行迭代计算,其中迭代过程中满足:a*x1=u(mod P0),a*x2=v(mod P0);其中,a为元素,当a关于P的逆元存在时,X为其逆元,即满足a*X=1(mod P);P为模数,P=P0*2k;P0为奇数,K为2的指数。
103、在迭代计算中每完成一次迭代,判断u、v中是否有一个为1,如u、v中没有一个是1,继续迭代计算;如u、v中有一个是1,结束迭代计算;
104、在迭代计算结束后,如u为1,则将X1赋值给X,如v为1,则将X2赋值给X;
105、当K=0时,判断X是否大于零,如X大于零,X即为a关于P的模逆;如X小于零,X'=X+P0;其中X'为a关于P的模逆。
可选的,上述102中迭代计算的方法具体可以为下述方式中的任一种:
方式A、获取u最低字节尾数0的个数ZeroNum,决定本次迭代u右移位数,该u右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x1+n*P0的尾数有ZeroNum个0,对大数u,x1进行迭代更新,u=u>>ZeroNum,x1=(x1+n*P0)>>ZeroNum;
方式B、获取v最低字节尾数0的个数ZeroNum,决定本次迭代v右移位 数,该v右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x2+n*P0的尾数有ZeroNum个0,对大数v,x2进行迭代更新,v=v>>ZeroNum,x2=(x2+n*P0)>>ZeroNum。
方式C、获取u—v最低字节尾数0的个数ZeroNum,决定本次迭代u右移位数,该u右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x1+n*P0-x2的尾数有ZeroNum个0,对系数n做越界处理,保证|x1+n*P0-x2|<P0*2ZeroNum,对大数u,x1进行迭代更新,u=u>>ZeroNum,x1=(x1+n*P0-x2)>>ZeroNum。
方式D、获取v—u最低字节尾数0的个数ZeroNum,决定本次迭代v右移位数,该v右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x2+n*P0-x1的尾数有ZeroNum个0。对系数n做越界处理,保证|x2+n*P0-x1|<P0*2ZeroNum,对大数v,x2进行迭代更新,v=v>>ZeroNum,x2=(x2+n*P0-x1)>>ZeroNum。
方式E、如果u,v相等,确定元素a的模逆不存在;即u(或v)即为a与P的最大公约数。
可选的,上述方式在105之后还可以包括:
当K大于0时,获取k比特的TailInvA,满足a*TailInvA的最低k比特为00...01,即选择合适的n,将X''=Y+nP0的最低k比特凑成与TailInvA一样,则X''为a关于P的模逆;其中Y为a关于P0的模逆;。
本发明提供的方法在K=0时,即模数P的尾数为1时,此时P=P0,通过测试发现,采用本发明提供的方法计算速度比通常的计算方法的速度快了近一倍,所以其具有计算速度快的优点,另外,当P为偶数时,在迭代计算中,本发明的计算方法资源需求上少了两个大数变量,所以其具有计算资源计算小的优点。
本发明具体实施方式还提供一种元素的模逆计算装置,该装置200如图2所示,包括:
初始化单元201,用于获取临时变量X1、X2和递减变量u、v的初始值,其中,X1、X2的初始值分别为1、0;递减变量u、v的初始值分别为a、P0;
奇数模逆计算单元202,用于对临时变量X1、X2和递减变量u、v进行迭代计算,其中迭代过程中满足:a*x1=u(mod P0),a*x2=v(mod P0);其中,a为元素,当a关于P的逆元存在时,X为其逆元,即满足a*x=1(mod P);P为模数,P=P0*2k;P0为奇数
模逆处理单元203,用于在迭代计算中每完成一次迭代,判断u、v中是否有一个为1,如u、v中没有一个是1,继续迭代计算;如u、v中有一个是1,结束迭代计算;在迭代计算结束后,如u为1,则将X1赋值给X,如v为1,则将X2赋值给X;当K=0时,判断X是否大于零,如X大于零,X即为a关于P的模逆;如X小于零,X'=X+P0;其中X'为a关于P的模逆。
可选的,奇数模逆计算单元202具体用于:
获取u最低字节尾数0的个数ZeroNum,决定本次迭代u右移位数,该u右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x1+n*P0的尾数有ZeroNum个0,对大数u,x1进行迭代更新,u=u>>ZeroNum,x1=(x1+n*P0)>>ZeroNum;
或获取v最低字节尾数0的个数ZeroNum,决定本次迭代v右移位数,该v右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x2+n*P0的尾数有ZeroNum个0,对大数v,x2进行迭代更新,v=v>>ZeroNum,x2=(x2+n*P0)>>ZeroNum。
或获取u—v最低字节尾数0的个数ZeroNum,决定本次迭代u右移位数,该u右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值, 获取系数n,凑齐x1+n*P0-x2的尾数有ZeroNum个0,对系数n做越界处理,保证|x1+n*P0-x2|<P0*2ZeroNum,对大数u,x1进行迭代更新,u=u>>ZeroNum,x1=(x1+n*P0-x2)>>ZeroNum。
或获取v—u最低字节尾数0的个数ZeroNum,决定本次迭代v右移位数,该v右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x2+n*P0-x1的尾数有ZeroNum个0。对系数n做越界处理,保证|x2+n*P0-x1|<P0*2ZeroNum,对大数v,x2进行迭代更新,v=v>>ZeroNum,x2=(x2+n*P0-x1)>>ZeroNum。
可选的,上述装置还包括:
偶数模逆计算单元204,用于当K大于0时,获取k比特的TailInvA,满足a*TailInvA的最低k比特为00...01,选择合适的n,将X''=Y+nP0的最低k比特凑成与TailInvA一样,则X''为a关于P的模逆;其中Y为a关于P0的模逆。
可选的,上述模逆处理单元203的结构图如图3所示,包括:控制单元2031、多个存储单元2032和算术运算单元2033;其中,控制单元2031,用于对模逆计算过程中整个流程的控制,存储单元2032,用于存储大数中间变量,算术运算单元2033具体可以为多输入加法器,用于处理模逆运算中的32位比特级所有加法。
本发明提供的装置在K=0时,即模数P的尾数为1时,此时P=P0,通过测试发现,采用本发明提供的装置计算速度比通常的计算方法的速度快了近一倍,所以其具有计算速度快的优点,另外,当P为偶数时,在迭代计算中,本发明的装置资源需求上少了两个大数变量,所以其具有计算资源计算小的优点。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

一种元素的模逆计算方法及装置.pdf_第1页
第1页 / 共10页
一种元素的模逆计算方法及装置.pdf_第2页
第2页 / 共10页
一种元素的模逆计算方法及装置.pdf_第3页
第3页 / 共10页
点击查看更多>>
资源描述

《一种元素的模逆计算方法及装置.pdf》由会员分享,可在线阅读,更多相关《一种元素的模逆计算方法及装置.pdf(10页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN104123431A43申请公布日20141029CN104123431A21申请号201310144914022申请日20130424G06F19/0020110171申请人国民技术股份有限公司地址518057广东省深圳市南山区高新技术产业园区深圳软件园3栋301、30272发明人黄洋74专利代理机构深圳中一专利商标事务所44237代理人梁珣54发明名称一种元素的模逆计算方法及装置57摘要本发明适用于计算机及通信技术领域,提供了一种元素的模逆计算方法及装置,该方法包括获取临时变量X1、X2和递减变量U、V的初始值,其中,X1、X2的初始值分别为1、0;递减变量U、V的初始值。

2、分别为A、P0;对临时变量X1、X2和递减变量U、V进行迭代计算,其中迭代过程中满足AX1UMODP0,AX2VMODP0;在迭代计算中每完成一次迭代,判断U、V中是否有一个为1,如U、V中没有一个是1,继续迭代计算;如U、V中有一个是1,结束迭代计算;在迭代计算结束后,如U为1,则将X1赋值给X,如V为1,则将X2赋值给X;当K0时,判断X是否大于零,如X大于零,X即为A关于P的模逆。本发明提供的技术方案具有计算速度快,计算资源需求少的优点。51INTCL权利要求书2页说明书5页附图2页19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书5页附图2页10申请公布号CN1041。

3、23431ACN104123431A1/2页21一种元素的模逆计算方法,其特征在于,所述方法包括获取临时变量X1、X2和递减变量U、V的初始值,其中,X1、X2的初始值分别为1、0;递减变量U、V的初始值分别为A、P0;对临时变量X1、X2和递减变量U、V进行迭代计算,其中迭代过程中满足AX1UMODP0,AX2VMODP0;其中,A为元素,当A关于P的逆元存在时,X为其逆元,即满足AX1MODP;P为模数,PP02K,P0为奇数,K为2的指数;在迭代计算中每完成一次迭代,判断U、V中是否有一个为1,如U、V中没有一个是1,继续迭代计算;如U、V中有一个是1,结束迭代计算;在迭代计算结束后,如。

4、U为1,则将X1赋值给X,如V为1,则将X2赋值给X;当K0时,判断X是否大于零,如X大于零,X即为A关于P的模逆;如X小于零,XXP0;其中X为A关于P的模逆。2根据权利要求1所述的方法,其特征在于,所述对临时变量X1、X2和递减变量U、V进行迭代计算具体包括获取U最低字节尾数0的个数ZERONUM,决定本次迭代U右移位数,该U右移位数为ZERONUM,如果ZERONUM大于设定值,令ZERONUM设定值,获取系数N,凑齐X1NP0的尾数有ZERONUM个0,对大数U,X1进行迭代更新,UUZERONUM,X1X1NP0ZERONUM;或获取V最低字节尾数0的个数ZERONUM,决定本次迭代。

5、V右移位数,该V右移位数为ZERONUM,如果ZERONUM大于设定值,令ZERONUM设定值,获取系数N,凑齐X2NP0的尾数有ZERONUM个0,对大数V,X2进行迭代更新,VVZERONUM,X2X2NP0ZERONUM。或获取UV最低字节尾数0的个数ZERONUM,决定本次迭代U右移位数,该U右移位数为ZERONUM,如果ZERONUM大于设定值,令ZERONUM设定值,获取系数N,凑齐X1NP0X2的尾数有ZERONUM个0,对系数N做越界处理,保证|X1NP0X2|ZERONUM,X1X1NP0X2ZERONUM。或获取VU最低字节尾数0的个数ZERONUM,决定本次迭代V右移位数。

6、,该V右移位数为ZERONUM,如果ZERONUM大于设定值,令ZERONUM设定值,获取系数N,凑齐X2NP0X1的尾数有ZERONUM个0。对系数N做越界处理,保证|X2NP0X1|ZERONUM,X2X2NP0X1ZERONUM;所述设定值为大于1的整数。3根据权利要求2所述的方法,其特征在于,所述方法还包括当K大于0时,获取K比特的TAILINVA,满足ATAILINVA的最低K比特为0001,选择合适的N,将XYNP0的最低K比特凑成与TAILINVA一样,则X为A关于P的模逆;其中Y为A关于P0的模逆。4一种元素的模逆计算装置,其特征在于,所述装置包括初始化单元,用于获取临时变量X。

7、1、X2和递减变量U、V的初始值,其中,X1、X2的初始值分别为1、0;递减变量U、V的初始值分别为A、P0;奇数模逆计算单元,用于对临时变量X1、X2和递减变量U、V进行迭代计算,其中迭代过程中满足AX1UMODP0,AX2VMODP0;其中,A为元素,当A关于P的逆元存在时,X为其逆元,即满足AX1MODP;P为模数,PP02K;P0为奇数,K为2的指数;模逆处理单元,用于在迭代计算中每完成一次迭代,判断U、V中是否有一个为1,如U、权利要求书CN104123431A2/2页3V中没有一个是1,继续迭代计算;如U、V中有一个是1,结束迭代计算;在迭代计算结束后,如U为1,则将X1赋值给X,。

8、如V为1,则将X2赋值给X;当K0时,判断X是否大于零,如X大于零,X即为A关于P的模逆;如X小于零,XXP0;其中X为A关于P的模逆。5根据权利要求4所述的装置,其特征在于,所述奇数模逆计算单元具体用于获取U最低字节尾数0的个数ZERONUM,决定本次迭代U右移位数,该U右移位数为ZERONUM,如果ZERONUM大于设定值,令ZERONUM设定值,获取系数N,凑齐X1NP0的尾数有ZERONUM个0,对大数U,X1进行迭代更新,UUZERONUM,X1X1NP0ZERONUM;或获取V最低字节尾数0的个数ZERONUM,决定本次迭代V右移位数,该V右移位数为ZERONUM,如果ZERONU。

9、M大于设定值,令ZERONUM设定值,获取系数N,凑齐X2NP0的尾数有ZERONUM个0,对大数V,X2进行迭代更新,VVZERONUM,X2X2NP0ZERONUM。或获取UV最低字节尾数0的个数ZERONUM,决定本次迭代U右移位数,该U右移位数为ZERONUM,如果ZERONUM大于设定值,令ZERONUM设定值,获取系数N,凑齐X1NP0X2的尾数有ZERONUM个0,对系数N做越界处理,保证|X1NP0X2|ZERONUM,X1X1NP0X2ZERONUM。或获取VU最低字节尾数0的个数ZERONUM,决定本次迭代V右移位数,该V右移位数为ZERONUM,如果ZERONUM大于设定。

10、值,令ZERONUM设定值,获取系数N,凑齐X2NP0X1的尾数有ZERONUM个0。对系数N做越界处理,保证|X2NP0X1|ZERONUM,X2X2NP0X1ZERONUM;所述设定值为大于1的整数。6根据权利要求5所述的装置,其特征在于,所述装置还包括偶数模逆计算单元,用于当K大于0时,获取K比特的TAILINVA,满足ATAILINVA的最低K比特为0001,选择合适的N,将XYNP0的最低K比特凑成与TAILINVA一样,则X为A关于P的模逆;其中Y为A关于P0的模逆。7根据权利要求5或6任一所述的装置,其特征在于,所述模逆处理单元包括控制单元、多个存储单元和算术运算单元;其中,所述。

11、控制单元,用于对模逆计算过程中整个流程的控制;所述存储单元,用于存储大数中间变量;所述算术运算单元,用于处理模逆运算中的32位比特级所有加法。权利要求书CN104123431A1/5页4一种元素的模逆计算方法及装置技术领域0001本发明属于计算机及通信电子领域,尤其涉及一种元素的模逆计算方法及装置。背景技术0002随着计算机网络技术和通信技术的发展,对元素求其模逆的问题应用越来越广泛。譬如,RSA算法中的密钥的产生,椭圆曲线公钥密码系统和数字签名方案中,在选择仿射坐标系的情况下,也需要频繁地用到模逆运算。目前,通常元素的模逆计算方法一般有三种费马定理方法,蒙哥马利模逆方法和二进制扩展欧几里得算。

12、法。费马定理不适合模逆不存在的情形,二进制扩展欧几里得算法是目前已公布的速度最快的算法。但是二进制扩展欧几里得算法的速度仍然很慢,且资源需求较大。发明内容0003本发明实施例的目的在于提供一种元素的模逆计算方法,旨在解决通过现有技术中计算速度慢,资源需求大的问题。0004本发明实施例是这样实现的,一种元素的模逆计算方法,所述方法包括0005获取临时变量X1、X2和递减变量U、V的初始值,其中,X1、X2的初始值分别为1、0;递减变量U、V的初始值分别为A、P0;0006对临时变量X1、X2和递减变量U、V进行迭代计算,其中迭代过程中满足AX1UMODP0,AX2VMODP0;其中,A为元素,当。

13、A关于P的逆元存在时,X为其逆元,即满足AX1MODP,;P为模数,PP02K;P0为奇数,K为2的指数;0007在迭代计算中每完成一次迭代,判断U、V中是否有一个为1,如U、V中没有一个是1,继续迭代计算;如U、V中有一个是1,结束迭代计算;0008在迭代计算结束后,如U为1,则将X1赋值给X,如V为1,则将X2赋值给X;0009当K0时,判断X是否大于零,如X大于零,X即为A关于P的模逆;如X小于零,XXP0;其中X为A关于P的模逆。0010可选的,所述对临时变量X1、X2和递减变量U、V进行迭代计算具体包括0011获取U最低字节尾数0的个数ZERONUM,决定本次迭代U右移位数,该U右移。

14、位数为ZERONUM,如果ZERONUM大于设定值,令ZERONUM设定值,获取系数N,凑齐X1NP0的尾数有ZERONUM个0,对大数U,X1进行迭代更新,UUZERONUM,X1X1NP0ZERONUM;0012或获取V最低字节尾数0的个数ZERONUM,决定本次迭代V右移位数,该V右移位数为ZERONUM,如果ZERONUM大于设定值,令ZERONUM设定值,获取系数N,凑齐X2NP0的尾数有ZERONUM个0,对大数V,X2进行迭代更新,VVZERONUM,X2X2NP0ZERONUM。0013或获取UV最低字节尾数0的个数ZERONUM,决定本次迭代U右移位数,该U右移位数为ZERO。

15、NUM,如果ZERONUM大于设定值,令ZERONUM设定值,获取系数N,凑齐X1NP0X2的尾数有ZERONUM个0,对系数N做越界处理,保证|X1NP0X2|ZERONUM,X1X1NP0X2ZERONUM。说明书CN104123431A2/5页50014或获取VU最低字节尾数0的个数ZERONUM,决定本次迭代V右移位数,该V右移位数为ZERONUM,如果ZERONUM大于设定值,令ZERONUM设定值,获取系数N,凑齐X2NP0X1的尾数有ZERONUM个0。对系数N做越界处理,保证|X2NP0X1|ZERONUM,X2X2NP0X1ZERONUM。0015可选的,所述方法还包括001。

16、6当K大于0时,获取K比特的TAILINVA,满足ATAILINVA的最低K比特为0001,选择合适的N,将XYNP0的最低K比特凑成与TAILINVA一样,则X为A关于P的模逆;其中Y为A关于P0的模逆;0017另一方面,提供一种元素的模逆计算装置,所述装置包括0018初始化单元,用于获取临时变量X1、X2和递减变量U、V的初始值,其中,X1、X2的初始值分别为1、0;递减变量U、V的初始值分别为A、P0;0019奇数模逆计算单元,用于对临时变量X1、X2和递减变量U、V进行迭代计算,其中迭代过程中满足AX1UMODP0,AX2VMODP0;其中,A为元素,当A关于P的逆元存在时,X为其逆元。

17、,即满足AX1MODP;P为模数,PP02K;P0为奇数,K为2的指数;0020模逆处理单元,用于在迭代计算中每完成一次迭代,判断U、V中是否有一个为1,如U、V中没有一个是1,继续迭代计算;如U、V中有一个是1,结束迭代计算;在迭代计算结束后,如U为1,则将X1赋值给X,如V为1,则将X2赋值给X;当K0时,判断X是否大于零,如X大于零,X即为A关于P的模逆;如X小于零,XXP0;其中X为A关于P的模逆。0021可选的,所述奇数模逆计算单元具体用于0022获取U最低字节尾数0的个数ZERONUM,决定本次迭代U右移位数,该U右移位数为ZERONUM,如果ZERONUM大于设定值,令ZERON。

18、UM设定值,获取系数N,凑齐X1NP0的尾数有ZERONUM个0,对大数U,X1进行迭代更新,UUZERONUM,X1X1NP0ZERONUM;0023或获取V最低字节尾数0的个数ZERONUM,决定本次迭代V右移位数,该V右移位数为ZERONUM,如果ZERONUM大于设定值,令ZERONUM设定值,获取系数N,凑齐X2NP0的尾数有ZERONUM个0,对大数V,X2进行迭代更新,VVZERONUM,X2X2NP0ZERONUM。0024或获取UV最低字节尾数0的个数ZERONUM,决定本次迭代U右移位数,该U右移位数为ZERONUM,如果ZERONUM大于设定值,令ZERONUM设定值,获。

19、取系数N,凑齐X1NP0X2的尾数有ZERONUM个0,对系数N做越界处理,保证|X1NP0X2|ZERONUM,X1X1NP0X2ZERONUM。0025或获取VU最低字节尾数0的个数ZERONUM,决定本次迭代V右移位数,该V右移位数为ZERONUM,如果ZERONUM大于设定值,令ZERONUM设定值,获取系数N,凑齐X2NP0X1的尾数有ZERONUM个0。对系数N做越界处理,保证|X2NP0X1|ZERONUM,X2X2NP0X1ZERONUM。0026可选的,所述装置还包括0027偶数模逆计算单元,用于当K大于0时,获取K比特的TAILINVA,满足ATAILINVA的最低K比特为。

20、0001,选择合适的N,将XYNP0的最低K比特凑成与TAILINVA一样,则X为A关于P的模逆;其中Y为A关于P0的模逆;0028本发明实施例与现有技术相比,有益效果在于本发明的技术方案的计算速度比通常的算法的速度快了接近一倍,当P为偶数时,资源需求上少了两个大数变量,所以其具说明书CN104123431A3/5页6有计算速度快,资源需求小的优点。附图说明0029图1是本发明实施例提供的一种元素的模逆计算方法的流程图;0030图2是本发明实施例提供的一种元素的模逆计算装置的结构图;0031图3是本发明实施例提供的模逆处理单元的硬件结构图。具体实施方式0032为了使本发明的目的、技术方案及优点。

21、更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。0033本发明具体实施方式提供一种元素的模逆计算方法,该方法如图1所示,包括0034101、获取临时变量X1、X2和递减变量U、V的初始值,其中,X1、X2的初始值分别为1、0;递减变量U、V的初始值分别为A、P0;0035102、对临时变量X1、X2和递减变量U、V进行迭代计算,其中迭代过程中满足AX1UMODP0,AX2VMODP0;其中,A为元素,当A关于P的逆元存在时,X为其逆元,即满足AX1MODP;P为模数,PP02K;P0为奇数,K为2的指数。0。

22、036103、在迭代计算中每完成一次迭代,判断U、V中是否有一个为1,如U、V中没有一个是1,继续迭代计算;如U、V中有一个是1,结束迭代计算;0037104、在迭代计算结束后,如U为1,则将X1赋值给X,如V为1,则将X2赋值给X;0038105、当K0时,判断X是否大于零,如X大于零,X即为A关于P的模逆;如X小于零,XXP0;其中X为A关于P的模逆。0039可选的,上述102中迭代计算的方法具体可以为下述方式中的任一种0040方式A、获取U最低字节尾数0的个数ZERONUM,决定本次迭代U右移位数,该U右移位数为ZERONUM,如果ZERONUM大于设定值,令ZERONUM设定值,获取系。

23、数N,凑齐X1NP0的尾数有ZERONUM个0,对大数U,X1进行迭代更新,UUZERONUM,X1X1NP0ZERONUM;0041方式B、获取V最低字节尾数0的个数ZERONUM,决定本次迭代V右移位数,该V右移位数为ZERONUM,如果ZERONUM大于设定值,令ZERONUM设定值,获取系数N,凑齐X2NP0的尾数有ZERONUM个0,对大数V,X2进行迭代更新,VVZERONUM,X2X2NP0ZERONUM。0042方式C、获取UV最低字节尾数0的个数ZERONUM,决定本次迭代U右移位数,该U右移位数为ZERONUM,如果ZERONUM大于设定值,令ZERONUM设定值,获取系数。

24、N,凑齐X1NP0X2的尾数有ZERONUM个0,对系数N做越界处理,保证|X1NP0X2|ZERONUM,X1X1NP0X2ZERONUM。0043方式D、获取VU最低字节尾数0的个数ZERONUM,决定本次迭代V右移位数,该V右移位数为ZERONUM,如果ZERONUM大于设定值,令ZERONUM设定值,获取系数N,凑齐X2NP0X1的尾数有ZERONUM个0。对系数N做越界处理,保证|X2NP0X1|ZERONUM,X2X2NP0X1ZERONUM。说明书CN104123431A4/5页70044方式E、如果U,V相等,确定元素A的模逆不存在;即U或V即为A与P的最大公约数。0045可选。

25、的,上述方式在105之后还可以包括0046当K大于0时,获取K比特的TAILINVA,满足ATAILINVA的最低K比特为0001,即选择合适的N,将XYNP0的最低K比特凑成与TAILINVA一样,则X为A关于P的模逆;其中Y为A关于P0的模逆;。0047本发明提供的方法在K0时,即模数P的尾数为1时,此时PP0,通过测试发现,采用本发明提供的方法计算速度比通常的计算方法的速度快了近一倍,所以其具有计算速度快的优点,另外,当P为偶数时,在迭代计算中,本发明的计算方法资源需求上少了两个大数变量,所以其具有计算资源计算小的优点。0048本发明具体实施方式还提供一种元素的模逆计算装置,该装置200。

26、如图2所示,包括0049初始化单元201,用于获取临时变量X1、X2和递减变量U、V的初始值,其中,X1、X2的初始值分别为1、0;递减变量U、V的初始值分别为A、P0;0050奇数模逆计算单元202,用于对临时变量X1、X2和递减变量U、V进行迭代计算,其中迭代过程中满足AX1UMODP0,AX2VMODP0;其中,A为元素,当A关于P的逆元存在时,X为其逆元,即满足AX1MODP;P为模数,PP02K;P0为奇数0051模逆处理单元203,用于在迭代计算中每完成一次迭代,判断U、V中是否有一个为1,如U、V中没有一个是1,继续迭代计算;如U、V中有一个是1,结束迭代计算;在迭代计算结束后,。

27、如U为1,则将X1赋值给X,如V为1,则将X2赋值给X;当K0时,判断X是否大于零,如X大于零,X即为A关于P的模逆;如X小于零,XXP0;其中X为A关于P的模逆。0052可选的,奇数模逆计算单元202具体用于0053获取U最低字节尾数0的个数ZERONUM,决定本次迭代U右移位数,该U右移位数为ZERONUM,如果ZERONUM大于设定值,令ZERONUM设定值,获取系数N,凑齐X1NP0的尾数有ZERONUM个0,对大数U,X1进行迭代更新,UUZERONUM,X1X1NP0ZERONUM;0054或获取V最低字节尾数0的个数ZERONUM,决定本次迭代V右移位数,该V右移位数为ZERON。

28、UM,如果ZERONUM大于设定值,令ZERONUM设定值,获取系数N,凑齐X2NP0的尾数有ZERONUM个0,对大数V,X2进行迭代更新,VVZERONUM,X2X2NP0ZERONUM。0055或获取UV最低字节尾数0的个数ZERONUM,决定本次迭代U右移位数,该U右移位数为ZERONUM,如果ZERONUM大于设定值,令ZERONUM设定值,获取系数N,凑齐X1NP0X2的尾数有ZERONUM个0,对系数N做越界处理,保证|X1NP0X2|ZERONUM,X1X1NP0X2ZERONUM。0056或获取VU最低字节尾数0的个数ZERONUM,决定本次迭代V右移位数,该V右移位数为ZE。

29、RONUM,如果ZERONUM大于设定值,令ZERONUM设定值,获取系数N,凑齐X2NP0X1的尾数有ZERONUM个0。对系数N做越界处理,保证|X2NP0X1|ZERONUM,X2X2NP0X1ZERONUM。0057可选的,上述装置还包括说明书CN104123431A5/5页80058偶数模逆计算单元204,用于当K大于0时,获取K比特的TAILINVA,满足ATAILINVA的最低K比特为0001,选择合适的N,将XYNP0的最低K比特凑成与TAILINVA一样,则X为A关于P的模逆;其中Y为A关于P0的模逆。0059可选的,上述模逆处理单元203的结构图如图3所示,包括控制单元20。

30、31、多个存储单元2032和算术运算单元2033;其中,控制单元2031,用于对模逆计算过程中整个流程的控制,存储单元2032,用于存储大数中间变量,算术运算单元2033具体可以为多输入加法器,用于处理模逆运算中的32位比特级所有加法。0060本发明提供的装置在K0时,即模数P的尾数为1时,此时PP0,通过测试发现,采用本发明提供的装置计算速度比通常的计算方法的速度快了近一倍,所以其具有计算速度快的优点,另外,当P为偶数时,在迭代计算中,本发明的装置资源需求上少了两个大数变量,所以其具有计算资源计算小的优点。0061以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。说明书CN104123431A1/2页9图1图2说明书附图CN104123431A2/2页10图3说明书附图CN104123431A10。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1