一种计算伽罗华域本原元正整数次幂的方法

文档序号:6444927阅读:588来源:国知局
专利名称:一种计算伽罗华域本原元正整数次幂的方法
技术领域
本发明涉及信息安全技术中的代数编解码领域,具体来说是一种计算伽罗华域本原元正整数次幂的方法。
背景技术
有限域乘法是目前代数编解码领域中应用到较多的运算,其中很多加密认证算法都要利用有限域乘法。伽罗华域就是广泛应用于代数编解码领域的一种重要有限域,伽罗华域的运算是主要指在特定规则下进行的两类运算:加法和乘法。在伽罗华域中仅包含O和I两个元素,其运算规则与有理数域不同,具体而言:加法是一种逻辑异或计算,可很容易利用一个异或门来实现;而乘法是一种逻辑与运算,利用一个与门也可以轻易实现。例如,对于一个伽罗华 域中ak(K为非负整数)的加法规则为:ak+ak = (ri)ak = 0,记为公式(一);a k+0 = a k+0* a k = (Γ0) a k = a k, a k+0 = a k 记为公式(二),其中 ~ 表示逻辑异或。例如a2+a2 = 0, a 2+0 = a 2,补充说明a°=l。对于一个伽罗华域GF (2m),若a为伽罗华域GF (2m)的本原元,可将GF (2m)的本原多项式表示为 P(X) = Xm+b[m-l]Xm-Wb [m-2]Xm_2+b[m-3]Xm_3+...+b [l]X+b [O],其中:m 是正整数,数组b[m]是本原多项式p(X)的O (m-1)次项的系数数组,b
b[m_l]是数组b[m]的m个元素,b[m]数组元素值为O或I。伽罗华域上元素的表示方法与域上运算算法关系密切,其域元素可用本原元素、剩余类、多项式及矢量表示,其中最直接的表示方法是本原元素表示方法(又称指数表示、幂次表示)。由生成GF(2m)域的本原多项式,可从本原元素表示法导出其他三种表示方法。根据伽罗华域原理,本原元a是方程P(X) =0的一个根,即 P ( Ct ) = O,可以得到 a m+b [m-1] a m_1+b [m_2] a m_2+b [m_3] a m'..+b [I] a +b
=0,再根据伽罗华域加法原理得到 a m = b [m-1] a ^+b [m_2] a m_2+b [m_3] a -3+...+b [I]a +b
,记为公式(三)。在代数编解码过程中,经常需要把α的正整数次幂即an(n为正整数)变换成最高次幂小于m的多项式表达式(简称为一表达式)。根据公式(三)可知无论η为多大的正整数,αη都可表示为最高次幂小于m的形式。例如:p(X) = X14+X12+Xn+X+1,则a 14 = a12+an+a+l, a 16 = a 14* a 2 = ( a 12+a n+a+1) a2 = a 14+( a 13+a 3+a 2)=a 12+a n+a+1+( a 13+a 3+a 2) = a 13+a 12+a n+a 3+a 2+a+1,因此 an 可以表示为如下格式:ct n = c [m-1] a m:+c [m~2] a m 2+c [m-3] a m 3+...+c [I] a +c
,记为公式(四),其中c [O] c [m-1]是a n对应多项式表达系数数组c [m]的m个元素,c[m]数组元素值为O或
1由公式(四)可知,若求得a11对应多项式表达系数数组c[m]的值,则可进一步求得a n的表达式。在已知本原多项式,即本原多项式最高幂次m值和本原多项式系数数组b[m]值已知的情况下,对于任意正整数n,都有唯一确定的a n对应多项式表达系数数组c[m]与之相对应。因此,计算本原元a的正整数次幂a "的关键在于获取该数组c [m]的值。
现有技术中采用一种制表存储方式来计算α η,即预先存储与η对应的数组c[m],之后查表获取相应的数组元素c [O] c [m-Ι],再根据公式(四)计算αη。通过存储每个η对应的数组c [m]来提供α11表达式的值,其中η最多取值个数用N表示,则存储每个η对应的数组c [m]共需要N*m个比特的存储空间。当N比较大而且m值比较大时,则需要很大的存储空间来存放每个η对应的数组c [m]。比如I彡η彡1024,m = 16,则需要16384比特的空间来存放每个η对应的数组c [m]。这无疑提高了处理器的存储要求,因而有必要提出一种新的伽罗华域本原元正整数次幂的计算方法。

发明内容
有鉴于此,本发明的目的在于提供一种计算伽罗华域本原元正整数次幂的方法,用以解决存储本原元α η表达式所对应数组c [m],在η范围比较大而且m值比较大情况下占用存储空间大的问题。为解决以上技术问题,本发明提供的技术方案是,一种计算伽罗华域本原元正整数次幂的方法,包括:预先构造递归函数update_c (X),该递归函数update_c (X)用以根据本原多项式中最高次幂m和系数数组b[m]的值计算与本原元正整数次幂α11对应^"对应多项式表达系数数组c [m]的值;以η为参数,执行该递归函数update_c(x),用以获取数组c[m]的值;根据表达式 a n = c [m-1] a m:+c [m-2] a m 2+c [m-3] a m 3+...+c [I] a +c
进打计算,用以获取本原元正整数次幂a n的计算结果。其中:该 递归函数update_C(X)中,输入参数x为正整数,递归规则如下:如果X小于m,则将数组c[m]中的元素c[x]更新为c[x]与I的异或值;函数update_c(x)更新数组c[m]结束。如果X等于m,则将数组c[m]更新为数组c[m]与数组b[m]的按位异或值;函数update_c(x)更新数组c[m]结束。如果X大于m,从步骤s[m-l]_0开始执行以下操作:步骤s[m-l]_0:判断b[m_l]是否为I,若b[m_l]为I则执行步骤s,否则执行步骤s [m-2] _0 ;步骤s[m-l]_l:比较χ-l值与m值,若χ-l小于m,则执行步骤s[m_l]_2 ;若x_l等于m,则执行步骤s[m-l]_3 ;若χ-l大于m,则执行步骤s[m_l]_4 ;步骤s [m-1]_2:执行 c[x_l] = c [x_l] ~b [m_l],然后执行步骤 s [m_2]_0 ;步骤s[m_l]_3:执行 c[m_l] = c [m_l] ~b [m_l]、c [m_2] = c [m_2] ~b [m_2]、c [m_3]=c[m-3] ~b[m-3]...c[l] = c[l] ~b[l]、c
= c
~b
操作,然后执行步骤 s[m_2]_0 ;步骤s[m_l]_4:执行 update_c (x_l),然后执行步骤 s[m_2]_0 ;步骤s[m-2]_0:判断b[m_2]是否为1,若b[m_2]为I则执行步骤s [m_2]_l,否则执行步骤s [m-3] _0 ;步骤s [m-2]_1:比较x_2值与m值,若x_2小于m,则执行步骤s [m_2]_2 ’若x_2等于m,则执行步骤s [m-2]_3 ;若χ-2大于m,则执行步骤s [m_2]_4 ;步骤s[m_2]_2:执行 c[x_2] = c[x_2] ~b[m_2],然后执行步骤 s[m_3]_0 ;
步骤s[m_2]_3:执行 c[m_l] = c [m_l] ~b [m_l]、c [m_2] = c [m_2] ~b [m_2]、c [m_3]=c[m-3] ~b[m-3]...c[l] = c[l] ~b[l]、c
= c
~b
操作,然后执行步骤 s[m_3]_0 ;步骤s [m-2]_4:执行 update_c (x_2),然后执行步骤 s [m_3]_0 ;步骤s [m-3]_0:判断b [m-3]是否为1,若b [m-3]为I则执行步骤s [m_3]_l,否则执行步骤s [m-4] _0 ;步骤s[m_3]_l:比较x_3值与m值,若x_3小于m,则执行步骤s[m_3]_2 ;若x_3等于m,则执行步骤s [m-3]_3 ;若χ-3大于m,则执行步骤s [m_3]_4 ;步骤s[m_3]_2:执行 c[x_3] = c[x_3] ~b[m_3],然后执行步骤 s[m_4]_0 ;步骤s[m_3]_3:执行 c[m_l] = c [m_l] ~b [m_l]、c [m_2] = c [m_2] ~b [m_2]、c [m_3]=c[m-3] ~b[m-3]...c[l] = c[l] ~b[l]、c
= c
~b
操作,然后执行步骤 s[m_4]_0 ;步骤s [m-3]_4:执行 update_c (χ-3),然后执行步骤 s [m_4]_0 ;步骤s[l]_0:判断b[l]是否为1,若b[l]为I则执行步骤s[l]_l,否则执行步骤s
_0 ;步骤s[l]_l:比较χ-m+l值与m值,若χ-m+l小于m,则执行步骤s[l]_2 ;若x-m+1等于m,则执行步骤s[l]_3 ;若χ-m+l大于m,则执行步骤s[l]_4 ;步骤s[l]_2:执行 c [χ-m+l] = c [x-m+l] ~b [I],然后执行步骤 s
_0 ;步骤s[l]_3:执行 c [m-1] = c [m_l] ~b [m_l]、c[m_2] = c [m_2] ~b [m_2]、c [m-3]=c[m-3] ~b[m-3]...c[l] = c[l] ~b[l]、c
= c
~b
操作,然后执行步骤 s[l]_0 ;步骤s[l]_4:执行 update_c (χ-m+l),然后执行步骤 s
_0 ;步骤s
_0:判断b
是否为1,若b
为I则执行步骤s
_l,否则函数update_c (x)结束;步骤s
_l:比较x-m值与m值,若χ-m小于m,则执行步骤s
_2 ;若χ-m等于m,则执行步骤s
_3 ;若x-m大于m,则执行步骤s
_4 ;步骤s
_2:执行 c [x-m] = c [x_m] ~b [O],然后函数 update_c (x)结束;步骤s
_3:执行 c [m-1] = c [m_l] ~b [m_l]、c[m_2] = c [m_2] ~b [m_2]、c [m-3]=c[m-3] ~b[m-3]...c[l] = c[l]~b[l]、c
= c
~b
操作,然后函数 update_c (x)结束;步骤s
_4:执行 update_c (χ-m),函数 update_c (x)更新数组 c [m]结束。其中调用函数update_c (X)前预先将数组c[m]初始化为O。可选地,采用通用处理器,以计算伽罗华域本原元正整数次幂。或者,通过与门、异或门来实现硬件构建,以计算伽罗华域本原元正整数次幂。与现有技术相比,本发明计算伽罗华域本原元正整数次幂的方法无需存储η个数组c [m],假定η最多取值个数用N表示,贝U本发明可节省N*m个比特的存储空间。例如N =1024,m = 16时可节省16384比特的存储空间,特别适用于存储空间较为紧张的场合。


图1表示本发明计算伽罗华域本原元正整数次幂的方法的基本流程;图2表示图1中递归计算步骤的基本过程。
具体实施例方式本发明的核心思想是,根据公式(一)、(二)、(三)、(四)的特点,预先构造根据m和数组b[m]的值计算数组c [m]值的递归函数update_c(x);之后将数组c[m]初始化为O,然后执行函数update_c (x),即可得到数组c [m]的值;最后根据an=c [m-1] a “+c [m-2]a m_2+c[m-3] a m_3+...+c[l] a +c
的表达式计算,得到伽罗华域本原元正整数次幂a '本发明实施例计算伽罗华域本原元正整数次幂an时,函数update_c(x)例化为update_c (η),则update_c (η)算法的基本原理是:(I)若η小于m则只需把c [η]更新为c [η] ~I,即c [n] = c [η] ~I,就计算完毕;(2)若η等于m,则数组c [m]更新为数组c[m]与b[m]的按位异或值,即c[m_l]=c [m-1] 'b [m-1] > c [m-2] = c [m-2] 'b [m-2] > c [m-3] = c [m-3] 'b [m-3]...c [I]=c [l]~b [I]、c
= c
~b
,就计算完毕。(3)如果 n 大于 m,由算法原理可知 αη = a n_m* a m = a n_m* (b [m-1] a “+b [m-2]a m_2+b[m-3] a『3+...+b[I] a +b
) = b[m-1]* a n_1+b[m-2]* a n_2+b[m-3]* a n_3+...+b[I]*an_m+1+b
*an_m。则从步骤s[m-l]_0开始执行以下操作:步骤s[m-l]_0:判断b[m_l]是否为I,若b[m_l]为I则执行步骤s,否则执行步骤s [m-2] _0。步骤s[m-l]_l:比较n_l值与m值,若n_l小于m,则执行步骤s[m_l]_2 ;若n_l等于m,则执行步骤s[m-l]_3 ;若n_l大于m,则执行步骤s[m_l]_4。步骤s [m-1]_2:执行 c[n_l] = c [n_l] ~b [m_l],然后执行步骤 s [m_2]_0。步骤s[m_l]_3:执行 c[m_l] = c [m_l] ~b [m_l]、c [m_2] = c [m_2] ~b [m_2]、c [m_3]=c[m-3] ~b[m-3]...c[l] = c[l] ~b[l]、c
= c
~b
操作,然后执行步骤 s[m_2]_0。步骤s[m_l]_4:执行 update_c (n_l),然后执行步骤 s[m_2]_0。步骤s [m-2]_0:判断b [m-2]是否为1,若b [m-2]为I则执行步骤s [m_2]_l,否则执行步骤s [m-3] _0。步骤s [m-2]_1:比较n_2值与m值,若n_2小于m,则执行步骤s [m_2]_2 ;若n_2等于m,则执行步骤s[m-2]_3 ;若n~2大于m,则执行步骤s[m_2]_4。步骤s[m_2]_2:执行 c[n_2] = c[n_2] ~b[m_2],然后执行步骤 s[m_3]_0。步骤s[m_2]_3:执行 c[m_l] = c [m_l] ~b [m_l]、c [m_2] = c [m_2] ~b [m_2]、c [m_3]=c[m-3] ~b[m-3]...c[l] = c[l] ~b[l]、c
= c
~b
操作,然后执行步骤 s[m_3]_0。步骤s[m_2]_4:执行 update_c (n_2),然后执行步骤 s[m_3]_0。步骤s [m-3]_0:判断b [m-3]是否为1,若b [m-3]为I则执行步骤s [m_3]_l,否则执行步骤s [m-4] _0。

步骤s[m-3]_l:比较n_3值与m值,若n_3小于m,则执行步骤s[m_3]_2 ;若n_3等于m,则执行步骤s[m-3]_3 ;若n_3大于m,则执行步骤s[m_3]_4。步骤s[m_3]_2:执行 c[n_3] = c[n_3] ~b[m_3],然后执行步骤 s[m_4]_0。步骤s[m_3]_3:执行 c[m_l] = c [m_l] ~b [m_l]、c [m_2] = c [m_2] ~b [m_2]、c [m_3]=c[m-3] ~b[m-3]...c[l] = c[l] ~b[l]、c
= c
~b
操作,然后执行步骤 s[m_4]_0。步骤s[m_3]_4:执行 update_c (n_3),然后执行步骤 s[m_4]_0。
...
步骤s[l]_0:判断b[l]是否为1,若b[l]为I则执行步骤s [1]_1,否则执行步骤s
_0。步骤s[l]_l:比较η-m+l值与m值,若η-m+l小于m,则执行步骤s[l]_2 ;^f n-m+1等于m,则执行步骤s[l]_3 ;若η-m+l大于m,则执行步骤s[l]_4。步骤s[l]_2:执行 c[η-m+l] = c[n_m+l] ~b[I],然后执行步骤 s
_0。步骤s[l]_3:执行 c [m-1] = c [m_l] ~b [m_l]、c[m_2] = c [m_2] ~b [m_2]、c [m-3]=c[m-3] ~b[m-3]...c[l] = c[l] ~b[l]、c
= c
~b
操作,然后执行步骤 s[l]_0。步骤s[l]_4:执行 update_c (η-m+l),然后执行步骤 s
_0。步骤s
_0:判断b
是否为1,若b
为I则执行步骤s
_l,否则函数update_c (η)结束。步骤s
_l:比n-m值与m值,若n-m小于m,则执行步骤s
_2 ;若n-m等于m,则执行步骤s
_3 ;若n-m大于m,则执行步骤s
_4。步骤s
_2:执行 c [n-m] = c [n_m] ~b [O],然后函数 update_c (η)结束。步骤s
_3:执行 c [m-1] = c [m_l] ~b [m_l]、c[m_2] = c [m_2] ~b [m_2]、c [m-3]=c[m-3] ~b[m-3]...c[l] = c[l]~b[l]、c
= c
~b
操作,然后函数 update_c (n)结束。步骤s
_4:执行 update_c (n-m),函数 update_c (η)更新数组 c [m]结束。本发明计算伽罗华域本原元正整数次幂的方法可根据上述递归函数计算数组c[m],因而无需存储数组c [m],从而节省存储空间,其关键在于递归函数update_c(x)的构建,即递归函数update_C(x)的算法实现。为了使本领域的技术人员更好地理解本发明的技术方案,下面结合附图和具体实施例对本发明作进一步的详细说明。参见图1,表示本发明计算伽罗华域本原元正整数次幂的方法的基本过程。具体的说,本发明执行以下完整过程:(I)预先构造递归函数update_c (X),该递归函数update_c (X)用以根据本原多项式中最高次幂m和系数数组b[m]的值计算与本原元正整数次幂αη对应多项式表达系数数组c[m]的值;(2)以η为参数,执行该递归函数update_c (x),用以获取数组c [m]的值;(3)根据表达式 ct n = c [m_l] a m:+c [m_2] a m 2+c [m_3] ct m 3+...+c [I] a +c
进行计算,用以获取本原元正整数次幂的计算结果。具体地,该利用函数update_c (x)计算α η值的算法如下:SlOl、初始化步骤-将本原元正整数次幂α η对应多项式表达系数数组c [m]中
的每个元素都初始化为O。S102、递归计算步骤-执行根据m和数组b[m]的值而构造的递归函数update—
C (X),计算数组C [m]的值。

S103、计算本原元正整数次幂步骤-依据公式=
m 2+c [m-3] a m 3+...+c [I] α +c [O],计算本原兀正整数次幕 α η。上述算法可采用通用处理器计算伽罗华域本原元正整数次幂,也可以通过与门、异或门来实现硬件构建,以计算伽罗华域本原元正整数次幂。
参见图2,表示表示图1中递归计算步骤的基本过程。该递归算法实现为:令函数update_c(x)为更新数组c[m]的递归函数,其中x是其输入参数,要求x为正整数,递归规则如下:S201、比较X与m,根据比较结果分别选择相应操作:如果X小于m,那么执行步骤S202 ;如果X等于m,那么执行步骤S203 ;如果X大于m,那么执行步骤S204 ;S202、将数组c[m]中的元素c[x]更新为c[x]与I的异或值,即执行c[x]=c[x]~l操作,然后退出函数。S203、将数组c[m]更新为数组c[m]与数组b[m]的按位异或值,即执行c[m_l]=c [m-1] 'b [m-1] > c [m-2] = c [m-2] 'b [m-2] > c [m-3] = c [m-3] 'b [m-3]...c [I]=c[l]~b[l]、c
= c
~b
操作,然后退出函数。S204、从步骤s[m-l]_0开始执行,更新数组c[m]。由算法原理可知,执行α x =a x--* am= a x_m* (b [m-1] a -^+b [m-2] a m_2+b [m-3] a m_3+...+b [I] a +b
) = b [m-1]* a x_J+b [m-2]* a x_2+b [m-3]* a x_3+...+b [I]* a x-m+1+b
*x_m 操作即可得到 a x,因而只需要从步骤s[m-l]_0开始执行更新数组c[m]。其中具体计算步骤如下,即从步骤s[m-l]_0开始执行以下操作:步骤s[m-l]_0:判断b[m_l]是否为I,若b[m_l]为I则执行步骤s,否则执行步骤s [m-2] _0。步骤s[m-l]_l:比较χ-l值与m值,若χ-l小于m,则执行步骤s[m_l]_2 ;若χ-l等于m,则执行步骤s[m-l]_3 ;若χ-l大于m,则执行步骤s[m_l]_4。步骤s [m-1]_2:执行 c [χ-l] = c [x_l] ~b [m_l],然后执行步骤 s [m_2]_0。步骤s[m_l]_3:执行 c[m_l] = c [m_l] ~b [m_l]、c [m_2] = c [m_2] ~b [m_2]、c [m_3]=c[m-3] ~b[m-3]...c[l] = c[l] ~b[l]、c
= c
~b
操作,然后执行步骤 s[m_2]_0。步骤S[m-1]_4:执行 update_c (X-1),然后执行步骤 s[m_2]_0。步骤s[m-2]_0:判断b[m_2]是否为1,若b[m_2]为I则执行步骤s [m_2]_l,否则执行步骤s [m-3] _0。步骤s [m-2]_1:比较x_2值与m值,若x_2小于m,则执行步骤s [m_2]_2 ’若χ-2等于m,则执行步骤s[m-2]_3 ;若χ-2大于m,则执行步骤s[m_2]_4。步骤s[m_2]_2:执行 c[x_2] = c[x_2] ~b[m_2],然后执行步骤 s[m_3]_0。步骤s[m_2]_3:执行 c[m_l] = c [m_l] ~b [m_l]、c [m_2] = c [m_2] ~b [m_2]、c [m_3]=c[m-3] ~b[m-3]...c[l] = c[l] ~b[l]、c
= c
~b
操作,然后执行步骤 s[m_3]_0。步骤s[m_2]_4:执行 update_c (x_2),然后执行步骤 s[m_3]_0。步骤s[m-3]_0:判断b[m_3]是否为1,若b[m_3]为I则执行步骤s [m_3]_l,否则执行步骤s [m-4] _0。步骤s[m-3]_l:比较χ-3值与m值,若χ-3小于m,则执行步骤s[m_3]_2 ;若χ-3等于m,则执行步骤s[m-3]_ 3 ;若χ-3大于m,则执行步骤s[m_3]_4。步骤s[m_3]_2:执行 c[x_3] = c[x_3] ~b[m_3],然后执行步骤 s[m_4]_0。步骤s[m_3]_3:执行 c[m_l] = c [m_l] ~b [m_l]、c [m_2] = c [m_2] ~b [m_2]、c [m_3]=C[m-3] ~b[m-3]...c[l] = c[l] ~b[l]、c
= c
~b
操作,然后执行步骤 s[m_4]_0。步骤s[m_3]_4:执行 update_c (x_3),然后执行步骤 s[m_4]_0。步骤s[l]_0:判断b[l]是否为1,若b[l]为I则执行步骤s [1]_1,否则执行步骤s
_0。步骤s[l]_l:比较χ-m+l值与m值,若χ-m+l小于m,则执行步骤s[l]_2 ;若χ-m+l等于m,则执行步骤s[l]_3 ;若χ-m+l大于m,则执行步骤s[l]_4。步骤s[l]_2:执行 c[χ-m+l] = c[x-m+l] ~b[I],然后执行步骤 s
_0。步骤s [1]_3:执行 c [m-1] = c [m_l] ~b [m_l]、c [m_2] = c [m_2] ~b [m_2]、c [m_3]=c[m-3] ~b[m-3]...c[l] = c[l] ~b[l]、c
= c
~b
操作,然后执行步骤 s[l]_0。步骤s[l ]_4:执行 update_c(x_m+l),然后执行步骤 s
_0。步骤s
_0:判断b
是否为1,若b
为I则执行步骤s
_l,否则函数update_c (X)结束。步骤s
_l:比较x-m值与m值,若χ-m小于m,则执行步骤s
_2 ;若χ-m等于m,则执行步骤s
_3 ;若x-m大于m,则执行步骤s
_4。步骤s
_2:执行 c [x-m] = c [x_m] ~b [O],然后函数 update_c (x)结束。步骤s
_3:执行 c [m_l] = c [m_l] ~b [m_l]、c [m_2] = c [m_2] ~b [m_2]、c [m_3]=c[m-3] ~b[m-3]...c[l] = c[l]~b[l]、c
= c
~b
操作,然后函数 update_c (x)结束。步骤s
_4:执行 update_c(x_m),然后函数 update_c(x)结束。应用实例:本原多项式最高幂次m = 14,本原多项式p(X) = X14+X12+Xn+X+1,即数组b[m]=[O,O,I,I,O,O,O,O,O,O,O,O,O,I,l]o 若 α 为伽罗华域 GF(214)的本原元,则 α 14 =
α 12+ α η+ a +10其中,利用函数update_c(x)计算αη值的算法如下:(I)将数组c[14]中每个元素都初始化为O。(2)执行函数 update_c(n),计算数组 c[14]的值,即得到 an= c[13] a 13+c[12]ct 12+c [11] a n+...+c [I] a +c
o具体地,更新数组c [m]的递归函数update_c (X)的计算规则如下:如果X小于14,那么执行c [X] = c [X] ~ I操作,然后退出函数;如果X 等于 14,那么执行 c [12] =c[12]~l、c[ll] =c[ll]~l、c[l] = c[l] ~1、c[O] = c
~I操作,然后退出函数。如果X大于14,从步骤example_s[12]_l开始执行,其中:步骤example_s [12]_1:比较x_2与14,如果x_2小于14则执行步骤examp I e_s[12]_2,如果x-2等于14则执行步骤example_s[12]_3,如果x_2大于14则执行步骤example_s[12]_4。步骤example_s[12]_2:执行 c[x_2] = c[x_2] ~1 操作,然后执行步骤 example_s[ll]_l。步骤example_s [12]_3:执行 c [12] = c[12]~l、c[ll] = c[ll]~l、c[l] = c[l] >c [O] = c
~1 操作,然后执行步骤 example_s[ll]_l。步骤example_s [12]_4:执行 update_c (x_2)操作,然后执行步骤 examp I e_s[ll]_l。步骤example_s [11]_1:比较χ-3与14,如果χ-3小于14则执行步骤examp I e_s[ll]_2,如果χ-3等于14则执行步骤example_s[ll]_3,如果χ-3大于14则执行步骤exampIe_s[11]_4。步骤example_s[11]_2:执行 c[x_3] = c[x_3] ~1 操作,然后执行步骤 example_s[l]_l。步骤example_s[ll]_3:执行 c [12] = c[12]~l、c[ll] = c[ll]~l、c[l] = c[l] >c
= c
~1 操作,然后执行步骤 example_s[l]_l。步骤example_s [11]_4:执行 update_c (χ-3)操作,然后执行步骤 examp I e_s[l]_l。步骤example_s [1]_1:比较x_13与14,如果x_13小于14则执行步骤example_s[l]_2,如果χ-13等于14则执行步骤example_s[l]_3,如果x_13大于14则执行步骤example_s[1]_4。步骤example_s[1]_2:执行 c[x_13] = c[x_13]~l 操作,然后执行步骤 example_s
_l。步骤example_s [1]_3:执行 c [12] =c[12]~l、c[ll] =c[ll]~l、c[l] = c[l] >c [O] = c [O] ~ I 操作,然后执行步骤 examp I e_s [O] _1。步骤example_s [1]_4:执行 update_c (χ-13)操作,然后执行步骤 example_s
_l。步骤example_s
_1:比较x_14与14,如果x_14小于14则执行步骤example_s
_2,如果χ-14等于14则执行步骤example_s
_3,如果x_14大于14则执行步骤example_s
_4。步骤example_s
_2:执行 c[x_14] = c [x_14] ~ I 操作,然后函数 update_c (x)结束。步骤example_s
_3:执行 c [12] =c[12]~l、c[ll] =c[ll]~l、c[l] = c[l] >c [O] = c
~1操作,然后函数update_c(x)结束。步骤example_s
_4:执行 update_c (χ-14)操作,然后函数 update_c (χ)结束。

以上实施例所述计算伽罗华域本原元正整数次幂的方法无需存储数组c [m],因而可节省存储空间,特别适用于存储空间较为紧张的场合。

以上仅是本发明的优选实施方式,应当指出的是,上述优选实施方式不应视为对本发明的限制,本发明的保护范围应当以权利要求所限定的范围为准。对于本技术领域的普通技术人员来说,在不脱离本发明的精神和范围内,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1.一种计算伽罗华域本原元正整数次幂的方法,其特征在于,包括: 预先构造递归函数update_c (x),该递归函数update_c (x)用以根据本原多项式中最高次幂m和系数数组b[m]的值计算与本原元正整数次幂α11对应多项式表达系数数组c[m]的值; 以η为参数,执行该递归函数update_c (x),用以获取数组c [m]的值; 根据表达式 a n = c [m-1] a [m_2] α m-2+c [m_3] a -3+...+c[l] α+c
进行计算,用以获取本原元正整数次幂的计算结果。
2.如权利要求1所述的计算伽罗华域本原元正整数次幂的方法,其特征在于,该递归函数update_C (X)中,输入参数X为正整数,递归规则如下: 如果X小于m,则将数组c [m]中的元素c [X]更新为c[x]与I的异或值;函数update_c(x)更新数组c [m]结束; 如果X等于m,则将数组c[m]更新为数组c[m]与数组b[m]的按位异或值;函数update_c(x)更新数组c[m]结束; 如果X大于m,从步骤s[m-l]_0开始执行以下操作: 步骤s[m-l]_0:判断b[m-l]是否为1,若b[m_l]为I则执行步骤s[m_l]_l,否则执行步骤 s [m-2]_0 ; 步骤s[m-l]_l:比较x-Ι值与m值,若x_l小于m,则执行步骤s[m_l]_2 ;若x_l等于m,则执行步骤s[m-l]_3 ;若χ-l大于m,则执行步骤s[m_l]_4 ; 步骤 s [m-1]_2:执行 c[x-l] = c[x-l] ~b[m-l],然后执行步骤 s[m-2]_0 ;`步骤 s[m_l]_3:执行 c [m-1] = c [m_l] ~b [m_l]、c [m_2] = c [m_2] ~b [m_2]、c [m_3]=c[m-3] ~b[m-3]...c[l] = c[l] ~b[l]、c
= c
~b
操作,然后执行步骤 s[m_2]_0步骤 s[m-l]_4:执行 update_c (x-1),然后执行步骤 s[m_2]_0 ; 步骤s[m-2]_0:判断b[m-2]是否为1,若b[m_2]为I则执行步骤s [m_2]_l,否则执行步骤 s [m-3]_0 ; 步骤s[m-2]_l:比较χ-2值与m值,若x_2小于m,则执行步骤s[m_2]_2 ;若x_2等于m,则执行步骤s [m-2]_3 ;若x_2大于m,则执行步骤s [m_2]_4 ;步骤 s[m-2]_2:执行 c [x-2] = c [x_2] ~b [m_2],然后执行步骤 s[m_3]_0 ;步骤 s[m_2]_3:执行 c [m-1] = c [m_l] ~b [m_l]、c [m_2] = c [m_2] ~b [m_2]、c [m_3]=c[m-3] ~b[m-3]...c[l] = c[l] ~b[l]、c
= c
~b
操作,然后执行步骤 s[m_3]_0 ;步骤 s[m-2]_4:执行 update_c (x-2),然后执行步骤 s[m_3]_0 ; 步骤s[m-3]_0:判断b[m-3]是否为1,若b[m_3]为I则执行步骤s [m_3]_l,否则执行步骤 s [m-4] _0 ; 步骤s[m-3]_l:比较χ-3值与m值,若x_3小于m,则执行步骤s[m_3]_2 ;若x_3等于m,则执行步骤s [m-3]_3 ;若x_3大于m,则执行步骤s [m_3]_4 ;步骤 s[m-3]_2:执行 c [x-3] = c [x_3] ~b [m_3],然后执行步骤 s[m_4]_0 ;步骤 s[m_3]_3:执行 c [m-1] = c [m_l] ~b [m_l]、c [m_2] = c [m_2] ~b [m_2]、c [m_3]=c[m-3] ~b[m-3]...c[l] = c[l] ~b[l]、c
= c
~b
操作,然后执行步骤 s[m_4]_0 ;步骤 s[m-3]_4:执行 update_c (x-3),然后执行步骤 s[m_4]_0 ;步骤s[l]_0:判断b[l]是否为1,若b[l]为I则执行步骤s[l]_l,否则执行步骤S
_0 ; 步骤s[l]_l:比较x-m+1值与m值,若χ-m+l小于m,则执行步骤s[l]_2 ;若χ-m+l等于m,则执行步骤s[l]_3 ;若χ-m+l大于m,则执行步骤s[l]_4 ; 步骤 s[l]_2:执行 c [χ-m+l] = c[x-m+l] ~b[l],然后执行步骤 s
_0 ;步骤 s [1]_3:执行 c [m_l] = c [m—1] ~b [m_l]、c [m_2] = c [m_2] ~b [m_2]、c [m_3]=c[m-3] ~b[m-3]...c[l] = c[l] ~b[l]、c
= c
~b
操作,然后执行步骤 s[l]_0 ;步骤s[l]_4:执行update_c (χ-m+l),然后执行步骤s
_0 ; 步骤s
_0:判断b
是否为1,若b
为I则执行步骤s
_l,否则函数update_C(X)结束; 步骤s
_l:比x-m值与m值,若χ-m小于m,则执行步骤s
_2 ;若χ-m等于m,则执行步骤s
_3 ;若x-m大于m ,则执行步骤s
_4 ; 步骤 s
_2:执行 c [x-m] = c[x_m] ~b
,然后函数 update_c(x)结束;步骤 s
_3:执行 c [m_l] = c [m-1] 'b [m-1] > c [m-2] = c [m_2] ~b [m_2]、c [m_3]=c[m-3] ~b[m-3]...c[l] = c[l]~b[l]、c
= c
~b
操作,然后函数 update_c (x)结束; 步骤 s
_4:执行 update_c (χ-m),函数 update_c (x)更新数组 c [m]结束。
3.如权利要求1所述的计算伽罗华域本原元正整数次幂的方法,其特征在于,调用函数update_c(x)前预先将数组c[m]初始化为O。
4.如权利要求1所述的计算伽罗华域本原元正整数次幂的方法,其特征在于,采用通用处理器,以计算伽罗华域本原元正整数次幂。
5.如权利要求1所述的计算伽罗华域本原元正整数次幂的方法,其特征在于,通过与门、异或门来实现硬件构建,以计算伽罗华域本原元正整数次幂。
全文摘要
本发明涉及信息安全技术中的代数编解码领域,具体公开一种计算伽罗华域本原元正整数次幂的方法,包括预先构造递归函数update_c(x),该递归函数update_c(x)用以根据本原多项式中最高次幂m和系数数组b[m]的值计算与本原元正整数次幂αn对应多项式表达系数数组c[m]的值;以n为参数,执行该递归函数update_c(x),用以获取数组c[m]的值;根据表达式αn=c[m-1]αm-1+c[m-2]αm-2+c[m-3]αm-3+...+c[1]α+c
进行计算,用以获取本原元正整数次幂αn的计算结果。本发明无需存储数组c[m]元素,有利于节省存储空间。
文档编号G06F17/15GK103186504SQ20111046032
公开日2013年7月3日 申请日期2011年12月30日 优先权日2011年12月30日
发明者冷永春, 胡胜发 申请人:安凯(广州)微电子技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1