AES算法作业流程以及4种工作模式作业流程图Word下载.docx
- 文档编号:19334976
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:10
- 大小:497.07KB
AES算法作业流程以及4种工作模式作业流程图Word下载.docx
《AES算法作业流程以及4种工作模式作业流程图Word下载.docx》由会员分享,可在线阅读,更多相关《AES算法作业流程以及4种工作模式作业流程图Word下载.docx(10页珍藏版)》请在冰豆网上搜索。
i++)
ByteSub(State);
//S-盒
ShiftRow(State);
//行被移位
MixColumn(State);
//列被混叠
AddRoundKey(State,ExpandedKey);
}
//最后一轮
AddRoundKey(State,ExpandedKey);
2、AES加密算法
2.1、状态、密钥、轮数
状态:
解密过程中中间数据。
以字节为元素矩阵,或二维数组。
所有操作都在状态上进行。
状态可以用以字节为元素矩阵阵列表达,如上图所示该阵列有4行,列数记为Nb,Nb等于分组长度除以4。
符号阐明:
Nb-明密文所含数据字数。
Nk-密钥所含数据字数。
Nr-迭代轮数。
2.1、S盒变换
S盒变换其实是一种查表过程,分别取一种字节高4位和低4位作为行值和列值(因而是),然后在S盒中找到相应字节替代之。
该变换是一种非线性变换。
这个非线性就体当前S盒构造上。
S
盒变换是
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)mod8+ci,Ci是字节0x63第i位。
该变换用矩阵表达如下所示:
2.2、行移位变换
在行移位变换中,状态第一行没有任何变化,第二行循环移位C1字节,第三行循环移位C2字节,第四行循环移位C3字节。
位移量C1、C2和C3与分组长度Nb关于,如下表:
行移位举例如下所示:
2.3、列混合变换
列混淆即是用一种常矩阵乘以第二步变换后矩阵,以达到矩阵中每一种元素都是该元素原所在列所有元素加权和。
2.4、轮密钥加变换
状态与轮密钥(16
byte)异或相加。
轮密钥由种子密钥通过密钥调度算法产生得到,轮密钥长度等于分组长度
Nb
。
3、密钥调度算法
轮密钥是通过密钥调度算法从密钥中产生,这其中涉及两个某些:
密钥扩展和轮密钥选用。
基本原理如下:
1、所有轮密钥比特总数等于轮数加1乘以分组长度(如128比特分组长度
和10轮迭代,共需要1408比特密钥);
2、将密钥扩展成一种扩展密钥;
3、轮密钥按下述方式从扩展密钥中选用:
第一种轮密钥由一开始Nb个字组
成,第二个轮密钥由接下来Nb个字构成,如此继续下去。
3.1密钥扩展
扩展密钥用数组W[Nb*(Nr+l)]表达,前Nk个字是种子密钥,其他密钥字通过递归定义生成。
由于密钥扩展函数取决于Nk值,咱们分了Nk≤6和Nk>6两种状况。
对于密钥扩展,用类C语言描述如下:
KeyExpansion(bytekey[4*Nk],wordw[Nb*(Nr+1)],Nk)
begin
wordtemp
i=0
while(i<
Nk)
w[i]=word(key[4*i],key[4*i+1],key[4*i+2],key[4*i+3])
i=i+1
endwhile
i=Nk
Nb*(Nr+1)]
temp=w[i-1]
if(imodNk=0)
temp=SubWord(RotWord(temp))xorRcon[i/Nk]
elseif(Nk>
6andimodNk=4)
temp=SubWord(temp)
endif
w[i]=w[i-Nk]xortemp
i=i+1
endwhile
end
扩展算法如下:
①最前面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],且乘法定义在域GF(2^8)上。
j
1
2
3
4
5
6
7
8
9
10
RC[j](HEX)
01
02
04
08
20
40
80
1B
36
3.2轮密钥选取
在进行密钥加时,密钥长必要与分组长相等,因此第i轮密钥与分组长度关于,并且由扩展密钥字w[Nb*i],w[Nb*i+1],…,w[Nb*(i+1)]构成。
如下图所示给出了Nb=4,Nk=4时轮密钥选取状况。
4、AES四种模式:
ECB、CBC、CFB、OFB
4.1ECB
ECB是最简朴块密码加密模式,加密前依照加密块大小(如AES为128位)提成若干块,之后将每块使用相似密钥单独加密,解密同理。
ECB模式由于每块数据加密是独立因而加密和解密都可以并行计算,ECB模式最大缺陷是相似明文块会被加密成相似密文块,这种办法在某些环境下不能提供严格数据保密性。
4.2CBC
CBC模式对于每个待加密密码块在加密前会先与前一种密码块密文异或然后再用加密器加密。
第一种明文块与一种叫初始化向量数据块异或。
CBC模式相比ECB有更高保密性,但由于对每个数据块加密依赖与前一种数据块加密因此加密无法并行。
与ECB同样在加密前需要对数据进行填充,不是很适合对流数据进行加密。
Openssl中AES_cbc_encrypt容许length不是16(128位)整数倍,局限性某些会用0填充,输出总是16整数倍。
完毕加密或解密后会更新初始化向量IV。
4.3CFB
与ECB和CBC模式只可以加密块数据不同,CFB可以将块密文(BlockCipher)转换为流密文(StreamCipher)。
CFB加密工作分为两某些:
1、将一前段加密得到密文再加密
2、将第1步加密得到数据与当前段明文异或。
由于加密流程和解密流程中被块加密器加密数据是前一段密文,因而虽然明文数据长度不是加密块大小整数倍也是不需要填充,这保证了数据长度在加密先后是相似。
4.4OFB
OFB是先用块加密器生成密钥流(Keystream),然后再将密钥流与明文流异或得到密文流,解密是先用块加密器生成密钥流,再将密钥流与密文流异或得到明文,由于异或操作对称性因此加密和解密流程是完全同样。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AES 算法 作业 流程 以及 工作 模式 流程图