AES各部件及过程介绍

  • Post author:
  • Post category:其他


AES算法主要包括四个部件:

字节代换,行移位,列混合和轮密钥异或。各个部件详细讲解如下:

1.字节代换:根据输入字节,高四位作为S盒查询行号,低四位作为S盒查询列号。是唯一的非线性组件,起混淆的作用。

在解密的时候,查逆S盒即可。

2.行移位:左循环移位,第一行不移位,第二行左移一个字节(AES输入128bit,分成16个字节,每个字节8bit),第三行左移两个字节,第四行左移三个字节。行移位起扩散作用。

在解密时,将每一行执行相反的移位操作:第一行不移位,第二行右移一个字节,第三行右移两个字节,第四行右移三个字节。

3.列混合:每一列乘以一个矩阵,该矩阵为




(

2

3

1

1

1

2

3

1

1

1

2

3

3

1

1

2

)

\begin{pmatrix} 2&3 &1 &1 \\ 1&2 & 3 &1 \\ 1&1 & 2 &3 \\ 3& 1 & 1 &2 \end{pmatrix}








































































2








1








1








3





























3








2








1








1





























1








3








2








1





























1








1








3








2














































































,需要注意的是,乘法和加法都是定义在



G

F

(

2

8

)

GF(2^{8})






G


F


(



2











8










)





上的二元运算。列混合起到混淆和扩散作用。

解密时,乘



(

0

E

0

B

0

D

09

09

0

E

0

B

0

D

0

D

09

0

E

0

B

0

B

0

D

09

0

E

)

\begin{pmatrix} 0E&0B & 0D &09 \\ 09&0E &0B &0D \\ 0D&09 &0E &0B \\ 0B& 0D &09 &0E \end{pmatrix}








































































0


E








0


9








0


D








0


B





























0


B








0


E








0


9








0


D





























0


D








0


B








0


E








0


9





























0


9








0


D








0


B








0


E














































































即可。

4.轮密钥异或

此处以128bit的密钥举例,先将128bit的密钥扩展,将128bit写成,4*4的字节矩阵,每四列即一个轮密钥,将4列拓展成44列,组成11个轮密钥。加密时,将信息矩阵和轮密钥逐位异或,轮密钥异或加起到混淆作用。

在整个过程中,值得注意的是:第一轮之前先进行一轮密钥异或,第十轮不进行列混合。

具体的过程如图所示:

在这里插入图片描述



版权声明:本文为weixin_45688580原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。