AES算法流程以及4种工作模式流程图

AES算法流程以及4种工作模式流程图

ID:47486439

大小:624.92 KB

页数:9页

时间:2020-01-12

AES算法流程以及4种工作模式流程图_第1页
AES算法流程以及4种工作模式流程图_第2页
AES算法流程以及4种工作模式流程图_第3页
AES算法流程以及4种工作模式流程图_第4页
AES算法流程以及4种工作模式流程图_第5页
资源描述:

《AES算法流程以及4种工作模式流程图》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1、AES加密算法基本流程AES算法的数据分组长度为128比特、密钥长度为128/192/256比特。AES加解密包括Nr轮,前面Nr-1轮包含S盒变换、行移位、列混淆、轮密钥加4个阶段,最后一轮则少了列混淆这个阶段。Rijnadel(State,CipherKey){//初始化KeyExpansion(CipherKey,ExpandedKey);//生成子密钥AddRoundKey(State,ExpandedKey);//与子密钥位与//前Nr-1轮for(i=1;i

2、移位MixColumn(State);//列被混叠AddRoundKey(State,ExpandedKey);//与子密钥位与}//最后一轮ByteSub(State);ShiftRow(State);AddRoundKey(State,ExpandedKey);}2、AES加密算法2.1、状态、密钥、轮数状态:解密过程中的中间数据。以字节为元素的矩阵,或二维数组。所有的操作都在状态上进行。状态可以用以字节为元素的矩阵阵列表示,如上图所示该阵列有4行,列数记为Nb,Nb等于分组长度除以4。符号说明:Nb-明密文所含的数据字数。Nk-密钥所含的数据字数。Nr-迭代轮数。

3、2.1、S盒变换S盒变换其实是一个查表的过程,分别取一个字节的高4位和低4位作为行值和列值(因此是),然后在S盒中找到对应的字节替换之。该变换是一个非线性变换。这个非线性就体现在S盒的构造上。S 盒变换是 AES 的唯一非线性变换,是 AES 安全的关键。关于S盒是按如下方式构造:1)初始化S盒,按行升序排列的字节初始化。行x列y的字节是xy,行号和列号从0开始计数。2)求出每一个元素在GF(2^8)中的逆。00被映射为它自身。3)仿射变换。对上一步中的每一个字节的每一位作如下变换yi=xi+x(i+4)mod8+x(i+5)mod8+x(i+6)mod8+x(i+7)

4、mod8+ci,Ci是字节0x63的第i位。该变换用矩阵表示如下所示:2.2、行移位变换在行移位变换中,状态的第一行没有任何变化,第二行循环移位C1字节,第三行循环移位C2字节,第四行循环移位C3字节。位移量C1、C2和C3与分组长度Nb有关,如下表:行移位举例如下所示:2.3、列混合变换列混淆即是用一个常矩阵乘以第二步变换后的矩阵,以达到矩阵中每一个元素都是该元素原所在列所有元素的加权和。2.4、轮密钥加变换状态与轮密钥(16 byte)异或相加。轮密钥由种子密钥通过密钥调度算法产生得到,轮密钥长度等于分组长度 Nb 。3、密钥调度算法轮密钥是通过密钥调度算法从密钥中

5、产生的,这其中包括两个部分:密钥扩展和轮密钥选取。基本原理如下:1、所有轮密钥比特的总数等于轮数加1乘以分组长度(如128比特的分组长度和10轮迭代,共需要1408比特的密钥);2、将密钥扩展成一个扩展密钥;3、轮密钥按下述方式从扩展密钥中选取:第一个轮密钥由一开始的Nb个字组成,第二个轮密钥由接下来的Nb个字组成,如此继续下去。3.1密钥扩展扩展密钥用数组W[Nb*(Nr+l)]表示,前Nk个字是种子密钥,其它的密钥字通过递归定义生成。由于密钥扩展函数取决于Nk的值,我们分了Nk≤6和Nk>6两种情况。对于密钥扩展,用类C语言描述如下:KeyExpansion(byt

6、ekey[4*Nk],wordw[Nb*(Nr+1)],Nk)beginwordtempi=0while(i6andimodNk=4)temp=SubWord(temp)endifw[i]=w[i-Nk]xortempi=i+1endwhileen

7、d扩展算法如下:①最前面的Nk个字是由种子密钥填充的。②之后的每一个字W[j]等于前面的字W[j-1]的与Nk个位置之前的字W[j-Nk]的异或。③而且对于Nk的整数倍的位置处的字,在异或之前,对W[j-1]的进行如下变换:1、字节的循环移位RotByte,即当输入字为(a,b,c,d)时,输出字为(b,c,d,a)2、用S盒进行变换字中的每个字节3、异或轮常数Rcon[i/Nk]轮常量是一个字,这个字最右边三个字节总是0。每轮的轮常量均不同,其定义为Rcon[j]=(RC[j],0,0,0),其中RC[1]=1,RC[j]=2*RC[j

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。