zoukankan      html  css  js  c++  java
  • AES的数学基础

    1.有限域GF(2的8次方)

      1.AES中的许多运算是按byte定义,一个byte=8个bit,还有是按字,一个4个字节的字=32bit

      2.将字节看成有限域的一个元素,一个4个字节的字看程GF(28)中并且次数小于4的多项式

      3.有限域的元素在本算法中采用传统的多项式表达式,GF(28)中的所有元素的系数为GF(2)中,且次数小于8的多项式

      4.将 b7b6b5b4b3b2b1b0构成的一个字节看成多项式 

        b7x七次方+b6x六次方+。。。+b1x+b0,其中bi∈GF(2),0≤i≤7

      5.例如:十六进制数'57'对应的二进制数为01010111,看成一个字节,对应的多项式为x6+x4+x2+x+1。采用的运算又加法,乘法和X乘运算

      加法运算:

        有限域GF(28)中的两个元素相加,结果是一个次数不超过7的多项式,其系数等于两个元素对应系数的模2加(比特异或)

        有限域GF(28)中的两个元素加法与两个字节的按位模2加是一致的。

        例如: 十六进制数表示:'57'+'83'='D4' 多项式表示为:(x6+x4+x2+x+1)=(x7+x+1)=x7+x6+x4+x2 二进制数表示为:01010111+10000011=11010100

      

      乘法运算:

        要计算有限域GF(28)上的乘法,必须先确定GF(2)上的八次不可约多项式

        GF(28)上两个元素的乘积就是这两个多项式模乘(以此8此不可约多项式为模)。如果一个多项式除了1和自身没有其它因子,则就是不可约的。

        对于AES,这个八次不可约多项式确定为m(x)=x8+x4+x3+x+1,十六进制表示为011b,二进制表示为0000000100011011

        例如, 十六进制数表示'57'⊗'83' = 'C1' , 多项式表示 (x6+x4+x2+x+1)(x7+x+1) =x13+x11+x9+x8+x7+x7+x5+x3+x2+x+x6+x4+x2+x+1 =x13+x11+x9+x8+x6+x5+x4+x3+1 (x13+x11+x9+x8+x6+x5+x4+x3+1)modm(x) =x7+x6+1

        对于任何系数在二元域GF(2)中并且次数小于8的多项式b(x),可用推广的欧几里得算法得出    b(x)*a(x)+m(x)*c(x) = 1

           即 a(x)b(x) = 1 mod m(x)

      X乘运算:

        (b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x+b0)⨂x=b7x8+b6x7+b5x6+b4x5+b3x4+b2x3+b1x2+b0x 将上面的结果模m(x)求余得到x∙b(x)。

        1.如果b7=0,则结果就是xb(x)

        2.如果b7=1,则乘积结果先减去m(x),结果也为xb(x)

        用x乘以一个多项式简称x乘

        x(十六进制数表示为02)乘可以用字节内左移一位和紧接着一个1b的按位模2加来实现,该运算几位xtime运算。

    2.系数在GF(28)上的多项式

      多项式的系数可以定义为GF(28)中的元素,通过这个方法,四个字节构成的字可以表示为系数在GF(28)上的次数小于4的多项式,多项式的加法就是对应系数相加。GF(28)中的加法为按模2加,因此两个字节的加法就是按模2加。

      乘法比较复杂,规定多项式的乘法运算必须要取模M(x)=x4+1,这样使得次数小于4的多项式的乘积仍然是一个次数小于4的多项式,将多项式的模乘运算计为⨂

      例如:

      设a(x)=a3x3+a2x2+a1x+a0和b(x)=b3x3+b2x2+b1x+b0为GF(28)上的两个多项式,

      有 c(x)=a(x)⨂b(x)=c3x3+c2x2+c1x+c0 则 c0=a0∙b0⨁a3∙b1⨁a2∙b2⨁a1∙b3                 c1=a1∙b0⨁a0∙b1⨁a3∙b2⨁a2∙b3

               c2=a2∙b0⨁a1∙b1⨁a0∙b2⨁a3∙b3

               c3=a3∙b0⨁a2∙b1⨁a1∙b2⨁a0∙b3

        

             M(x)不是GF(28)中的不可约多项式

             

     

  • 相关阅读:
    百度之星2019 初赛一 题解
    [NOI2019]弹跳(KD-Tree/四分树/线段树套平衡树 优化建图+Dijkstra)
    [BZOJ2157]旅游(树链剖分/LCT)
    [BZOJ3230]相似子串(后缀数组)
    回文树/回文自动机(PAM)学习笔记
    [CF30E]Tricky and Clever Password(KMP+manacher)
    APIO2019题解
    代码大全
    算法竞赛常用资料整理
    手动修复 Flash CS3 简中化不完全问题
  • 原文地址:https://www.cnblogs.com/beautiful7/p/12845786.html
Copyright © 2011-2022 走看看