AES算法过程解析

第一步:密钥拓展
首先密钥拓展要分2中情况,Nk<=6 和 Nk>6 这里只讲解Nk<=6的情况。
当Nk=4的时候,如下图 可以得到W0,W1,W2,W3这个初始密钥

再有 w4=w0^S(R(W3))^Ci 这里的R是对W3进行循环左移一个字节。

S函数是对 进行循环左移的结果进行一次查表置换,具体表如下 查S表高4位做行,低4位做列

举例:0C查表的结果为fe

ci如下

至于I不是Nk倍数的情况举例: W5=W4^W1 W6=W5^W2

至此,密钥拓展完毕,下面开始AES算法的计算。

第一步,对明文与K0 进行异或

将异或的结果进行R轮迭代,即可得到密文Y 下面是迭代的流程。

字节替代的过程即为S盒变换的过程

行位移 第一行不变 当 Nk<=6的时候 二三四分别左移 1 2 3 位

Nk>6时 左移 1 3 4 位

列混淆 : 用下图方阵×行移位的结果

得到 混淆后的结果 再对结果与密钥Ki进行异或,即可得到输出结果Xi,循环10次 得到输出结果(Nk=4时)
注:最后一次运算无需再进行列混合。