一种元素的模逆计算方法及装置制造方法

文档序号:6502110阅读:393来源:国知局
一种元素的模逆计算方法及装置制造方法
【专利摘要】本发明适用于计算机及通信【技术领域】,提供了一种元素的模逆计算方法及装置,该方法包括:获取临时变量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的模逆。本发明提供的技术方案具有计算速度快,计算资源需求少的优点。
【专利说明】一种元素的模逆计算方法及装置

【技术领域】
[0001] 本发明属于计算机及通信电子领域,尤其涉及一种元素的模逆计算方法及装置。

【背景技术】
[0002] 随着计算机网络技术和通信技术的发展,对元素求其模逆的问题应用越来越广 泛。譬如,RSA算法中的密钥的产生,椭圆曲线公钥密码系统和数字签名方案中,在选择仿 射坐标系的情况下,也需要频繁地用到模逆运算。目前,通常元素的模逆计算方法一般有 三种:费马定理方法,蒙哥马利模逆方法和二进制扩展欧几里得算法。费马定理不适合模逆 不存在的情形,二进制扩展欧几里得算法是目前已公布的速度最快的算法。但是二进制扩 展欧几里得算法的速度仍然很慢,且资源需求较大。


【发明内容】

[0003] 本发明实施例的目的在于提供一种元素的模逆计算方法,旨在解决通过现有技术 中计算速度慢,资源需求大的问题。
[0004] 本发明实施例是这样实现的,一种元素的模逆计算方法,所述方法包括:
[0005] 获取临时变量XI、X2和递减变量u、v的初始值,其中,XI、X2的初始值分别为1、 〇 ;递减变量u、v的初始值分别为a、P0 ;
[0006] 对临时变量XI、X2和递减变量u、v进行迭代计算,其中迭代过程中满足: a*xl=u(mod P0),a*x2=v(mod P0);其中,a为元素,当a关于P的逆元存在时,X为其逆元, 即满足a*x=l (mod P),;P为模数,P=P0*2k ;P0为奇数,K为2的指数;
[0007] 在迭代计算中每完成一次迭代,判断u、v中是否有一个为1,如u、v中没有一个是 1,继续迭代计算;如u、v中有一个是1,结束迭代计算;
[0008] 在迭代计算结束后,如u为1,则将XI赋值给X,如v为1,则将X2赋值给X ;
[0009] 当K=0时,判断X是否大于零,如X大于零,X即为a关于P的模逆;如X小于零, X' =Χ+Ρ0 ;其中X'为a关于P的模逆。
[0010] 可选的,所述对临时变量XI、X2和递减变量u、V进行迭代计算具体包括:
[0011] 获取u最低字节尾数0的个数ZeroNum,决定本次迭代u右移位数,该u右移位数 为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐xl+n*P0的尾 数有 ZeroNum 个 0,对大数 u,xl 进行迭代更新,u=u>>ZeroNum, xl= (xl+n*P0) >>ZeroNum ;
[0012] 或获取v最低字节尾数0的个数ZeroNum,决定本次迭代v右移位数,该v右移位 数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x2+n*P0的 尾数有 ZeroNum 个 0,对大数 V,x2 进行迭代更新,v=v>>ZeroNum, x2= (x2+n*P0) >>ZeroNum。
[0013] 或获取u-v最低字节尾数0的个数ZeroNum,决定本次迭代u右移位数,该u 右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐 xl+n*P0-x2的尾数有ZeroNum个0,对系数η做越界处理,保证| xl+n*P0-x2 | <P0*2ZeMNum, 对大数 u, xl 进行迭代更新,u=u>>ZeroNum, xl= (xl+n*P0_x2) >>ZeroNum。
[0014] 或获取v-u最低字节尾数0的个数ZeroNum,决定本次迭代v右移位数,该v 右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐 x2+n*P0-xl的尾数有ZeroNum个0。对系数η做越界处理,保证| x2+n*P0-xl | <P0*2ZeMNum, 对大数 v, x2 进行迭代更新,v=v>>ZeroNum, x2=(x2+n*P0_xl) >>ZeroNum。
[0015] 可选的,所述方法还包括:
[0016] 当K大于0时,获取k比特的Tai 1 InvA,满足a*Tai 1 InvA的最低k比特为00…01, 选择合适的η,将X' ' =Υ+ηΡ0的最低k比特凑成与TaillnvA -样,则X' '为a关于P的模 逆;其中Y为a关于P0的模逆;
[0017] 另一方面,提供一种元素的模逆计算装置,所述装置包括:
[0018] 初始化单元,用于获取临时变量XI、X2和递减变量u、V的初始值,其中,XI、X2的 初始值分别为1、〇 ;递减变量U、V的初始值分别为a、P0 ;
[0019] 奇数模逆计算单元,用于对临时变量X1、X2和递减变量u、v进行迭代计算,其中迭 代过程中满足:a*xl=u(mod P0),a*x2=v(mod P0);其中,a为元素,当a关于P的逆元存在 时,X为其逆元,即满足a*x=l (mod P) ;P为模数,P=P0*2k ;P0为奇数,K为2的指数;
[0020] 模逆处理单元,用于在迭代计算中每完成一次迭代,判断u、v中是否有一个为1, 如u、v中没有一个是1,继续迭代计算;如u、v中有一个是1,结束迭代计算;在迭代计算结 束后,如u为1,则将XI赋值给X,如v为1,则将X2赋值给X ;当K=0时,判断X是否大于零, 如X大于零,X即为a关于Ρ的模逆;如X小于零,X' =Χ+Ρ0 ;其中X'为a关于Ρ的模逆。
[0021] 可选的,所述奇数模逆计算单元具体用于:
[0022] 获取u最低字节尾数0的个数ZeroNum,决定本次迭代u右移位数,该u右移位数 为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐xl+n*P0的尾 数有 ZeroNum 个 0,对大数 u,xl 进行迭代更新,u=u>>ZeroNum, xl= (xl+n*P0) >>ZeroNum ;
[0023] 或获取v最低字节尾数0的个数ZeroNum,决定本次迭代v右移位数,该v右移位 数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x2+n*P0的 尾数有 ZeroNum 个 0,对大数 V,x2 进行迭代更新,v=v>>ZeroNum, x2= (x2+n*P0) >>ZeroNum。
[0024] 或获取u-v最低字节尾数0的个数ZeroNum,决定本次迭代u右移位数,该u 右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐 xl+n*P0-x2的尾数有ZeroNum个0,对系数η做越界处理,保证| xl+n*P0-x2 | <P0*2ZeMNum, 对大数 u, xl 进行迭代更新,u=u>>ZeroNum, xl= (xl+n*P0_x2) >>ZeroNum。
[0025] 或获取v-u最低字节尾数0的个数ZeroNum,决定本次迭代v右移位数,该v 右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐 x2+n*P0-xl的尾数有ZeroNum个0。对系数η做越界处理,保证| x2+n*P0-xl | <P0*2ZeMNum, 对大数 v, x2 进行迭代更新,v=v>>ZeroNum, x2=(x2+n*P0_xl) >>ZeroNum。
[0026] 可选的,所述装置还包括:
[0027] 偶数模逆计算单元,用于当K大于0时,获取k比特的TaillnvA,满足a*TailInvA 的最低k比特为00. .. 01,选择合适的n,将X' ' =Υ+ηΡ0的最低k比特凑成与TaillnvA -样, 则X''为a关于P的模逆;其中Y为a关于P0的模逆;
[0028] 本发明实施例与现有技术相比,有益效果在于:本发明的技术方案的计算速度比 通常的算法的速度快了接近一倍,当P为偶数时,资源需求上少了两个大数变量,所以其具 有计算速度快,资源需求小的优点。

【专利附图】

【附图说明】
[0029] 图1是本发明实施例提供的一种元素的模逆计算方法的流程图;
[0030] 图2是本发明实施例提供的一种元素的模逆计算装置的结构图;
[0031] 图3是本发明实施例提供的模逆处理单元的硬件结构图。

【具体实施方式】
[0032] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并 不用于限定本发明。
[0033] 本发明【具体实施方式】提供一种元素的模逆计算方法,该方法如图1所示,包括:
[0034] 101、获取临时变量X1、X2和递减变量u、v的初始值,其中,X1、X2的初始值分别为 1、〇 ;递减变量u、v的初始值分别为a、P0 ;
[0035] 102、对临时变量XI、X2和递减变量u、v进行迭代计算,其中迭代过程中满足: a*xl=u(mod P0),a*x2=v(mod P0);其中,a为元素,当a关于P的逆元存在时,X为其逆元, 即满足a*X=l (mod P) ;P为模数,P=P0*2k ;P0为奇数,K为2的指数。
[0036] 103、在迭代计算中每完成一次迭代,判断u、v中是否有一个为1,如u、v中没有一 个是1,继续迭代计算;如u、v中有一个是1,结束迭代计算;
[0037] 104、在迭代计算结束后,如u为1,则将XI赋值给X,如v为1,则将X2赋值给X ;
[0038] 105、当K=0时,判断X是否大于零,如X大于零,X即为a关于P的模逆;如X小于 零,X' =Χ+Ρ0 ;其中X'为a关于P的模逆。
[0039] 可选的,上述102中迭代计算的方法具体可以为下述方式中的任一种:
[0040] 方式A、获取u最低字节尾数0的个数ZeroNum,决定本次迭代u右移位数,该u 右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐 xl+n*P0 的尾数有 ZeroNum 个 0,对大数 u,xl 进行迭代更新,u=u>>ZeroNum, xl=(xl+n*P0) >>ZeroNum ;
[0041] 方式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〇
[0042] 方式C、获取u-v最低字节尾数0的个数ZeroNum,决定本次迭代u右移位数,该 u右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐 xl+n*P0-x2 的尾数有 ZeroNum 个 0,对系数 η 做越界处理,保证 | xl+n*P0-x2 | <P0*2Zer°Num, 对大数 u,xl 进行迭代更新,u=u>>ZeroNum,xl=(xl+n*P〇-x2)>>ZeroNum。
[0043] 方式D、获取v-u最低字节尾数0的个数ZeroNum,决定本次迭代v右移位数,该 v右移位数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐 x2+n*P0-xl 的尾数有 ZeroNum 个 0。对系数 η 做越界处理,保证 | x2+n*P0-xl |〈P0*2Zer°Num, 对大数 v,x2 进行迭代更新,v=v>>ZeroNum,x2=(x2+n*P〇-xl) >>ZeroNum。
[0044] 方式E、如果u,v相等,确定元素 a的模逆不存在;即u(或v)即为a与P的最大 公约数。
[0045] 可选的,上述方式在105之后还可以包括:
[0046] 当K大于0时,获取k比特的TaillnvA,满足a*TailInvA的最低k比特为00…01,

【权利要求】
1. 一种元素的模逆计算方法,其特征在于,所述方法包括: 获取临时变量X1、X2和递减变量u、v的初始值,其中,X1、X2的初始值分别为1、0 ;递 减变量u、v的初始值分别为a、P0 ; 对临时变量XI、X2和递减变量u、v进行迭代计算,其中迭代过程中满足:a*xl=u (mod PO), a*x2=v(mod PO);其中,a为元素,当a关于P的逆元存在时,X为其逆元,即满足 a*X=l (mod P) ;P为模数,P=P0*2k,P0为奇数,K为2的指数; 在迭代计算中每完成一次迭代,判断u、v中是否有一个为1,如u、v中没有一个是1,继 续迭代计算;如U、V中有一个是1,结束迭代计算; 在迭代计算结束后,如u为1,则将XI赋值给X,如v为1,则将X2赋值给X ; 当K=0时,判断X是否大于零,如X大于零,X即为a关于P的模逆;如X小于零,X' = X+P0 ;其中X'为a关于P的模逆。
2. 根据权利要求1所述的方法,其特征在于,所述对临时变量XI、X2和递减变量u、v 进行迭代计算具体包括: 获取u最低字节尾数0的个数ZeroNum,决定本次迭代u右移位数,该u右移位数为 ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐xl+n*P0的尾数 有 ZeroNum 个 0,对大数 u,xl 进行迭代更新,u=u>>ZeroNum,xl=(xl+n*PO)>>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,凑齐xl+n*P〇-x2 的尾数有ZeroNum个0,对系数η做越界处理,保证| xl+n*P0-x2 | <P0*2ZeMNum,对大数u,xl 进行迭代更新,u=u>>ZeroNum, xl=(xl+n*P〇-x2)>>ZeroNum。 或获取v- u最低字节尾数0的个数ZeroNum,决定本次迭代v右移位数,该v右移位 数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x2+n*P〇-xl 的尾数有ZeroNum个0。对系数η做越界处理,保证| x2+n*P0-xl | <P0*2ZeMNum,对大数V,x2 进行迭代更新,v=v>>ZeroNum, x2=(x2+n*P〇-xl)>>ZeroNum ; 所述设定值为大于1的整数。
3. 根据权利要求2所述的方法,其特征在于,所述方法还包括: 当K大于0时,获取k比特的TaillnvA,满足a*TailInvA的最低k比特为00. . . 01,选 择合适的η,将X' ' = Υ+nPO的最低k比特凑成与TaillnvA -样,则X' '为a关于P的模 逆;其中Y为a关于P0的模逆。
4. 一种元素的模逆计算装置,其特征在于,所述装置包括: 初始化单元,用于获取临时变量XI、X2和递减变量u、v的初始值,其中,XI、X2的初始 值分别为1、〇 ;递减变量u、v的初始值分别为a、P0 ; 奇数模逆计算单元,用于对临时变量XI、X2和递减变量u、v进行迭代计算,其中迭代过 程中满足:a*xl=u(mod P0),a*x2=v (mod P0);其中,a为元素,当a关于P的逆元存在时, X为其逆元,即满足a*x=l (mod P) ;P为模数,P=P0*2k ;P0为奇数,K为2的指数; 模逆处理单元,用于在迭代计算中每完成一次迭代,判断u、v中是否有一个为1,如u、 V中没有一个是1,继续迭代计算;如u、v中有一个是1,结束迭代计算;在迭代计算结束后, 如u为1,则将XI赋值给X,如v为1,则将X2赋值给X ;当K=0时,判断X是否大于零,如X 大于零,X即为a关于Ρ的模逆;如X小于零,X' = Χ+ΡΟ ;其中X'为a关于Ρ的模逆。
5. 根据权利要求4所述的装置,其特征在于,所述奇数模逆计算单元具体用于: 获取u最低字节尾数0的个数ZeroNum,决定本次迭代u右移位数,该u右移位数为 ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数η,凑齐xl+n*P0的尾数 有 ZeroNum 个 0,对大数 u,xl 进行迭代更新,u=u>>ZeroNum,xl= (xl+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,凑齐xl+n*P〇-x2 的尾数有ZeroNum个0,对系数η做越界处理,保证| xl+n*P0-x2 | <P0*2ZeMNum,对大数u,xl 进行迭代更新,u=u>>ZeroNum, xl=(xl+n*P〇-x2)>>ZeroNum。 或获取v- u最低字节尾数0的个数ZeroNum,决定本次迭代v右移位数,该v右移位 数为ZeroNum,如果ZeroNum大于设定值,令ZeroNum=设定值,获取系数n,凑齐x2+n*P〇-xl 的尾数有ZeroNum个0。对系数η做越界处理,保证| x2+n*P0-xl | <P0*2ZeMNum,对大数V,x2 进行迭代更新,v=v>>ZeroNum, x2=(x2+n*P〇-xl)>>ZeroNum ; 所述设定值为大于1的整数。
6. 根据权利要求5所述的装置,其特征在于,所述装置还包括: 偶数模逆计算单元,用于当κ大于0时,获取k比特的TaillnvA,满足a*TailInvA的最 低k比特为00. . . 01,选择合适的n,将X' ' = Υ+ηΡΟ的最低k比特凑成与TaillnvA -样, 则X' '为a关于P的模逆;其中Y为a关于P0的模逆。
7. 根据权利要求5或6任一所述的装置,其特征在于,所述模逆处理单元包括:控制单 元、多个存储单元和算术运算单元;其中,所述控制单元,用于对模逆计算过程中整个流程 的控制; 所述存储单元,用于存储大数中间变量; 所述算术运算单元,用于处理模逆运算中的32位比特级所有加法。
【文档编号】G06F19/00GK104123431SQ201310144914
【公开日】2014年10月29日 申请日期:2013年4月24日 优先权日:2013年4月24日
【发明者】黄洋 申请人:国民技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1