全文预览

AES密码学课程设计(C语言实现)

上传者:梦&殇 |  格式:docx  |  页数:23 |  大小:372KB

文档介绍
e[i][j]]; }?}}4.2.2、行移位(ShiftRows)一.State的第一行字节保持不变,State的第二行字节循环左移一个字节,State的第三行字节循环左移两个字节,State的第四行循环左移三个字节。行移位左偏移量:变化如图2所示。二.关键代码voidShiftRows(unsignedcharState[][4])//采用最原始的办法,以分别为0.1.2.3字节{?unsignedchark; k=State[1][0];State[1][0]=State[1][1];State[1][1]=State[1][2];State[1][2]=State[1][3];State[1][3]=k; k=State[2][1]; State[2][1]=State[2][3]; State[2][3]=k; k=State[2][0]; State[2][0]=State[2][2]; State[2][2]=k; k=State[3][3]; State[3][3]=State[3][2]; State[3][2]=State[3][1]; State[3][1]=State[3][0]; State[3][0]=k; }4.2.3、列混合(MixColumn)一.列混合变换是一个替代操作,是AES最具技巧性的部分。它只在AES的第0,1,…,Nr一1轮中使用,在第Nr轮中不使用该变换。乘积矩阵中的每个元素都是一行和一列对应元素的乘积之和。在MixColumns变换中,乘法和加法都是定义在GF()上的。State的每一列()1=0,…,3;J=0,…,被理解为GF()上的多项式,该多项式与常数多项式相乘并模约化。这个运算需要做GF()上的乘法。但由于所乘的因子是三个固定的元素02、03、01,所以这些乘法运算仍然是比较简单的(注意到乘法运算所使用的模多项式为

收藏

分享

举报
下载此文档