AES加密框图,以密钥长度128bit为例。
一、AES加密过程
明文(4*4字节矩阵)与 圈密钥进行异或运算,进入圈迭代;
首先是第一圈,字节替换,行移位,列混合,圈密钥加,进入第二圈;
.....
一直到第九圈;
第十圈相比前九圈少了列混合,第十圈的变换结果就是密文。
详细步骤
1、字节替换
将128比特的输入数据变换成4*4的字节矩阵,将字节矩阵中每一个字节利用同一个S盒变换为另一个字节,变换后位置不变。
具体做法:将字节矩阵中一个字节转为16进制的数xy,替换表(S盒)中第x行第y列的字节就是对应的字节替换后的结果
2、行移位变换
将第i行循环左移i个字节。将原来同一列中4个元素分散到不同的列中。
3、列混合变换
用一个固定的字节矩阵乘以输入的字节矩阵。
4、圈密钥加
将密钥字节矩阵与当前状态字节矩阵的对应字节异或。圈密钥是通过密钥生成算法从初始密钥中产生,其长度等于分组长度。
密钥生成算法
AES的圈密钥长度为128bit,即4*32位字,若迭代次数Nr,则一共需要4*(Nr+1)*32位字的密钥。AES-128(需要迭代10次)则需要44个32位字的密钥。
w0 | w1 | w2 | w3 | w4 | .... | w43 | w44 |
每一个Wi是32位字。
记Nk=初始密钥长度/32。表示初始密钥可产生的32位字的个数。
密钥长度 | 128 | 192 | 256 |
Nk | 4 | 6 | 8 |
对于不同的密钥长度,密钥生成算法有两种。Nk=4和Nk=6用一种方式,Nk=8用另外一种方式。
方式一:密钥长度为128和192
前Nk个32位字直接取自初始密钥(W0,W1,...Wk-1),后面的Wi是由前Nk个32字递归产生。
方式二
标签:AES,Nk,字节,32,矩阵,位字,密钥,原理 来源: https://www.cnblogs.com/xiaoxiaolinux/p/14948044.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。