AEX算法数学基础

本文为CSDN博主「Yuixz」的原创文章

原文链接:https://blog.csdn.net/u012620515/article/details/49825407

在原文基础上基础上增加了一些内容

字节运算:有限域GF(2^8)上的运算有限域GF(2^8)

  • 有限域GF(2^8)表示特征为2的具有2^8个元素的有限域,这里表示成系数在{0,1}中的多项式集合:

                                        b(x)={b7x^7+b6x^6+b5x^5+b4x^4+b3x^3+b2x^2+b1x+b0}

       这样任意的8位二进制数就和有限域中的一个多项式建立了一一对应的关系。

  • 加法运算

        在多项式表示中,GF(2^8)上两个元素的和仍然是一个次数不超过7的多项式,其系数等于两个元素对应的系数的模2加(即异或)
  由于每个元素的加法逆元等于自己,所以减法和加法相同。

  • xtime(x)

      定义: 函数xtime(x) 定义为GF (2 )上的x·b(x) 。其运算如下:若b 7 =0 ,则x·b(x) 的结果就是把字节b 左移一位,且在最右边补上上0 ;若b 7 =1 ,则先对b(x) 在字节内左移一位(最后一位补0 ),则再与‘1B’ (00011011 )做逐比特异或。

      实质上就是将参数的值乘以2,b7=0,则直接左移;b7=1,结果中x8系数为1,则需要减去不可约多项式m(x)=x8+x4+x3+x+1。(11B),即与1B进行异或。

  • 乘法运算

      在AES算法中,若两个多项式进行乘法运算,运算的方法为两个多项式相乘,若运算的结果超过8次方,则必须对此结果对一个多项式m(x)进行模运算。AES算法       中,这个8次不可约多项式确定为m(x)=x8+x4+x3+x+1。

     乘法原理:

      在二进制中,所有的数都能用0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80异或得到。
       0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80的表示如下:00000001,00000010,00000100,00001000,00010000,0010000,01000000,10000000.



举个栗子:

例如,‘57’·‘13’ 可按如下方式实现:
•‘57’·‘02’=xtime(57)=‘AE’ ;
•‘57’·‘04’=xtime(AE)=‘47’ ;
•‘57’·‘08’=xtime(47)=‘8E’ ;
•‘57’·‘10’=xtime(8E)=‘07’ ;
•‘57’·‘13’=‘57’·(‘01’⊕ ‘02’ ⊕‘10’)
• =‘57’⊕ ‘AE’ ⊕‘07’=‘FE’

猜你喜欢

转载自www.cnblogs.com/aaamax/p/12730660.html
今日推荐