发明内容
本发明所要解决的技术问题是提供一种基于多级查表的压缩伽罗华域的执行方法及系统,有效地降低查找表的占用空间,提高了系统的效率。
为了解决上述问题,本发明提供了一种基于多级查表的压缩伽罗华域的执行系统,用于通讯系统,
包括多项式乘法器模块、多级查表模块、域加模块,其中,
多项式乘法器模块:用于在伽罗华域上将带有系数的第一和第二多项式相乘来获得它们的乘积值,输入多级查表模块;
多级查表模块:用于将多项式乘法器模块输入的多项式的乘积值进行分级,通过分级查表的方式将获得的数值输入域加模块;
域加模块:用于根据多级查表模块中分级比特位和分级层次的不同,将多级查表模块输入的数值进行位异或操作获得最终值。
进一步地,上述执行系统还可包括,所述多项式乘法器模块是通过与门、异或门来实现硬件的构建。
进一步地,上述执行系统还可包括,所述多级查表模块的多级查表中的表是指同一个表,每一级查表只是对应地址的变化。
进一步地,上述执行系统还可包括,所述多级查表模块中所述分级的方式包括以4比特、8比特、3比特、或5比特作为分级的分级方式。
进一步地,上述执行系统还可包括,所述多级查表模块中,所述分级查表的方式包括两级查表的方式。
本发明还提供了一种基于多级查表的压缩伽罗华域的执行方法,用于通讯系统,包括,
在伽罗华域上将带有系数的第一和第二多项式相乘来获得它们的乘积值;
将多项式乘法器模块输入的多项式的乘积值进行分级,通过分级查表的方式获得数值,并根据分级比特位和分级层次的不同,将该获得的数值进行位异或操作获得最终值。
进一步地,上述执行方法还可包括,所述多级查表中的表是指同一个表,每一级查表只是对应地址的变化。
进一步地,上述执行方法还可包括,所述将多项式乘法器模块输入的多项式的乘积值进行分级中所述分级的方式,包括以4比特、8比特、3比特、或5比特作为分级的分级方式。
进一步地,上述执行方法还可包括,所述分级查表的方式包括两级查表的方式。
与现有技术相比,应用本发明,有效地降低查找表的占用空间,提高了系统的效率。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步说明。
本发明的主要构思是:本发明是在专利CN200580045323.1基础上作的进一步改进,因而两者基本结构相同,不同之处主要在于,当域的空间增大时,其查找表的空间呈指数级增长,因此在查表中本发明通过分级查表的方式,大幅度的减少了查表的空间,节省了资源,提高了效率,通常分级以4比特或8比特为基本单位。
本发明的压缩伽罗华域的执行系统可以分为以下几个部分,包括多项式乘法器模块、多级查表模块、域加模块,用于通讯系统中编码和加密,其装置结构见图1。
多项式乘法器模块:用于在伽罗华域上将带有系数的第一和第二多项式相乘来获得它们的乘积值,输入多级查表模块;
本模块的目的是计算两个输入域内数的乘积,以GF(28)计算为例,其输入为8个比特数据,假设分别为:
m1={a7a6a5a4a3a2a1a0}
m2={b7b6b5b4b3b2b1b0}
则m1×m2={a7a6a5a4a3a2a1a0}×{b7b6b5b4b3b2b1b0}
根据域定义m1和m2可以分别表示为:
m1=a7x7+a6x6+a5x5+a4x4+a3x3+a2x2+a1x+a0
m2=b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x+b0
则其乘积可以表示为:
c(x)=m1×m2=c14x14+c13x13+c12x12+c11x11+c10x10
+c9x9+c8x8+c7x7+c6x6+c5x5+c4x4+c3x3+c2x2+c1x+c0
注:乘积项中不包含x15。
其中乘积项系数表为:
c14=a7*b7
c0=a0*b0
根据上边计算公式可以求得
c=m1×m2={c14c13c12c11c10c9c8c7c6c5c4c3c2c1c0}
多项式乘法器模块针对硬件的实现,其系数公式中的*可以用“与门”来实现,
用“异或门”来实现。
多级查表模块:用于将多项式乘法器模块输入的多项式的乘积值进行分级,通过分级查表的方式将获得的数值输入域加模块,其中,通常分级以4比特或8比特为基本单位;
专利CN200580045323.1中相对应本模块是一个查找表,其输入为多项式乘法器的高位,以GF(28)为例,其输入为高7位,即c14-c8,通过查找地址{c14c13c12c11c10c9c8},求出一组数值,求出的数值用于最后的域加模块。
前边提到当域的空间增大时,其查找表空间指数级增长,为了避免这种缺陷,在本发明中,采用分级查找的方式,通常分级以4比特或8比特为基本单位,例如对于GF(28),如果以4比特分,则可以将地址分成3比特和4比特。首先用c14-c12作为地址第一次查表,其生成8比特数据,将生成数据与{c11c10c9c8c7c6c5c4}作位异或操作,生成新的8比特数据{c11′c10′c9′c8′c7′c6′c5′c4′},然后将{c11′c10′c9′c8′}作为第二次查找表的地址查找相对应的8比特数据,{c7′c6′c5′c4′}与{c7c6c5c4}进行异或操作生成新的4比特数据{e7e6e5e4},最后将第二个查找表输出的8比特数据{d7d6d5d4d3d2d1d0}和{e7e6e5e4}输出到域加模块。
如果采用专利CN200580045323.1的方法实现GF(28)的域乘法,需要查找表空间为128*8比特,而采用两级查找表所需查找表空间为16*8比特,可以看出节省的空间比例是非常大的。
在GF(28)的两级查表中使用的是同一个表,每一级查表只是对应地址的变化,对多级查表而言,其使用的也是一个表。
需要注意的是虽然通常分级以4比特或者8比特可以满足需求,但是本发明也包含其它分级方式(例如以3比特或5比特等的衍生分级方式)。本发明以GF(28)为例并不意味着本发明只应用于GF(28),它可以广泛地应用到几乎所有伽罗华域(不包含GF(20)、GF(21))。虽然此处只说明了两级查表,但本发明根据应用环境的变化也包含其它多级查表方式,其中,多级查表方式与两级类似。
域加模块:用于根据多级查表模块中分级比特位和分级层次的不同,将多级查表模块输入的数值进行位异或操作获得最终值。
本模块实现的就是最后的位异或操作,以前边所述的两级GF(28)为例,其计算为:
根据分级比特位的不同和分级层次多少的不同,域加模块具体的参与操作的比特位会略有区别,但基本操作都是两个8比特数据的位异或操作。
如图2所示,基于多级查表的压缩伽罗华域的执行方法,用于通讯系统中编码和加密,包括以下步骤,
步骤100、在伽罗华域上将带有系数的第一和第二多项式相乘来获得它们的乘积值;
步骤200、将多项式乘法器模块输入的多项式的乘积值进行分级,通过分级查表的方式获得数值,并根据分级比特位和分级层次的不同,将该获得的数值进行位异或操作获得最终值。
下面结合具体实例对本发明作进一步说明。
在AES(先进加密标准)加解密算法中使用倒GF(28)的域乘法,其不可约多项式为:x8+x4+x3+x+1。
输入数据为两路8比特数据,其实现就是前边描述系数表的实现,即用与和异或操作实现第一步乘法(多项式乘法器模块),以系数c7为例,如果采用硬件实现,其硬件描述为:
Assign c[7]=
(a7&b0)^(a6&b1)^(a5&b2)^(a4&b3)^(a3&b4)^(a2&b5)^(a1&b6)^(a0&b7);
这是阻塞赋值描述方式,也可以采用非阻塞赋值描述方式。
多级查表模块采用2级查表,先进行3比特查表后,再进行4比特查表。其表的内容如下:
地址 |
数据 |
0 |
00 |
1 |
1b |
2 |
36 |
3 |
2d |
4 |
6c |
5 |
77 |
6 |
5a |
7 |
41 |
8 |
d8 |
9 |
c3 |
a |
ee |
b |
f5 |
c |
b4 |
d |
af |
e |
82 |
f |
99 |
其中,地址和数据都是十六进制数据。
域加模块实现按位异或操作,如果采用硬件描述语言,其阻塞赋值方式可以表示为:
Assign dout[7:0]=din1[7:0]^din2[7:0];
也可以用非阻塞赋值方式描述。
假设输入的数据为16进制,m1=57,m2=83。则经过多项式乘法模块操作后其输出为:2b79,将高三位作为地址查表,2对应36,则将36与2b79的中间8位做位异或操作, 取结果的高4位作为地址,即将8作为地址进行第二次查表,8对应d8,将d8与81的后4位和2b79的后4位拼成的8位数据做位异或操作,则最后将 C1即最后计算结果。
本实例采用硬件描述语言实现并不表示本发明仅限于硬件,也可以是其它方式,包含基于各种硬件的软件等。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。