AES中的运算是按字节或4字节的字定义的,并把1字节看成是系数在GF(2)上的次数小于8的多项式,即把1字节看成是有限域GF(28)中的一个元素,把一个4字节的字看成是系数在GF(28)上,且次数小于4的多项式。
在有限域GF(28)上的字节运算中,把b7b6b5b4b3b2b1b0构成的1字节看成是系数在(0,1)中取值的多项式
例如把十六进制数23对应的二进制数00100011看成1字节,对应的多项式为x5+x+1。
1.多项式加法
在多项式表示中,两个元素的和是一个多项式,其系数是两个元素的对应系数的模2加。
【例4-11】 求23与64的模2加。
【解析】
采用二进制记法: 23→00100011 64→01100100
00100011⊕01100100=01000111→47
或者采用其多项式记法:00100011→x5+x+1
01100100→x6+x5+x2
(x5+x+1)+(x6+x5+x2)=x6+x2+x+1→01000111→47
因此,23⊕64=47
显然,该多项式加法与简单地以字节为单位的比特异或是一致的。
2.多项式乘法
有限域GF(28)中两个元素的乘法为模2元域GF(2)上的一个8次不可约多项式的多项式乘法。对于AES这一8次不可约多项式为
m(x)=x8+x4+x3+x+1
【例4-12】 计算23·64。
由于(www.xing528.com)
所以
即
(x5+x+1)(x6+x5+x2)=x7+x4+x3 (多项式表示)
00100011·01100100=10011000 (二进制表示)
23·64=98 (十六进制表示)
3.x乘法
把b7b6b5b4b3b2b1b0构成的1字节看成是系数在(0,1)中取值的多项式
用x乘以多项式B(x)
如果b7=0,则
xB(x)=b6x7+b5x6+b4x5+b3x4+b2x3+b1x2+b0x
构成的字节为(b6b5b4b3b2b1b00)。
如果b7=1,则
则构成的字节为(00011011)⊕(b6b5b4b3b2b1b00)。
归纳之
对应字节为(000b7b70b7b7)⊕(b6b5b4b3b2b1b00)
则构成的字节为
(000b7b70b7b7)⊕(b6b5b4b3b2b1b00)⊕(b7b6b5b4b3b2b1b0)
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。