首页 > 编程知识 正文

aes算法流程,aes乘法逆元求法详解

时间:2023-05-04 16:18:12 阅读:29297 作者:1914

目录

AES算法

一.确定加密回合数-算法迭代次数-子密钥数

二.密钥扩展-循环密钥生成

三.加密解密

四. AES算法的特点

五. AES算法的应用

推荐参考:

3359 blog.csdn.net/QQ _ 28205153/article/details/55798628

3359 blog.csdn.net/u 012470144/article/details/81259115

3359 blog.csdn.net/guidao 13/article/details/84135099

AES算法在DES算法本身没有设计缺陷,但计算硬件的飞速发展,使得DES的56位密钥空间不堪高速密钥的穷举攻击。 168位密钥空间的三重DES已经广泛用于扩展密钥空间,但三次DES串行加密也存在明显的弊端,这就是附加解密效率的降低。

鉴于DES解密、加密效率低下的缺点,美国国家标准与技术研究所(NIST )于2000年通过了选拔,来自多个候选算法的http://验证是最新的AES算法的Rijndael是比利时密码学家Joan Daemen和Vincent Rijmen设计的组加密算法。 Rijndael是比利时密码学家Joan Daemen和Vincent Rijmen设计的组加密算法。

3358 www.Sina.com/http://www.Sina.com /是组密码,明文组长度均为128位(16字节*8位),密钥长度为128位、192位,另外在设计上,AES没有采用DES算法的Feistel结构,而是采用Rijndael算法

高级加密标准

1、明文组:将明文分成128位的几个明文块,用选择的填充方法填充最后的明文块;

2、密钥扩展:使用密钥扩展算法将128个用户的主密钥扩展为r个循环密钥;

3、加密:每个明文块利用AES加密器和私钥,加密为密文块。

初始循环密钥加(AES,Advanced Encryption Standard)字节替换、行移位、列混合、循环密钥加; 最终非标准循环函数:字节替换、行移位、循环密钥相加; 4、将所有密文块连接起来,得到最终的密文结果。

SP结构

算法流程简介:

2、作为DES的替代算法,AES在设计上满足以下标准:

与DES一样,可以有效地防止已知的攻击; 加密算法易于实现现有软硬件平台,加密和解密的过程效率优于DES; 具有典型的对称群加密算法的特性,以快速混淆和扩频为设计原则,本质是循环函数过程的循环。Nr-1圈标准轮函数:

AES

的处理单位是字节明文分组长度和密钥长度不同,加密轮数不同(10~14轮计算),以明文长度128位,密钥长度128位为例,128位的输入明文分组P和输入密钥K都被分成16个字节。确定方法如下    ----数据表示:按列优先

1、明密文分组:128位

将明文、密钥分组,分别记为P = P0 P1 … P15 和 K = K0 K1 … K15。如:明文分组为P = abcdefghijklmnop,其中的字符a对应P0,p对应P15。

明文分组:

明文分组用字节为单位的正方形矩阵描述,称为状态矩阵S。在算法的每一轮中,状态矩阵的内容不断发生变化,最后的结果作为密文输出。该矩阵中字节的排列顺序为从上到下、从左至右依次排列,如下图所示:

确定Nb:状态分为四行,Nb列(AES中Nb=128位/32=4

密钥分组

确定Nk:方法同上,密钥也可分为四行、Nk列(Nk=密钥长度/32);

2、确定Nr:迭代圈数Nr由Nb和Nk共同决定:

二、密钥扩展->圈密钥产生

将密钥扩展为44个圈密钥:初始轮密钥4个+加密10轮迭代40个圈密钥。128位密钥用字节为单位的矩阵表示,矩阵的每一列被称为1个32位比特字,通过密钥编排函数该密钥矩阵被扩展成一个44个字组成的序列W[0],W[1], … ,W[43]。

该序列的前4个元素W[0],W[1],W[2],W[3]是原始密钥,用于加密运算中的初始轮密钥加

后面40个字分为10组,每组4个字(128比特)分别用于10轮加密运算中的轮密钥加

1、扩展方法

将初始密钥输入到一个4*4的状态矩阵中,如图所示:

4*4矩阵的每一列的4个字节组成一个字,矩阵4列的4个字依次命名为W[0]、W[1]、W[2]和W[3],它们构成一个以字为单位的数组W。例如,设密钥K为"abcdefghijklmnop",则K0 = ‘a’,K1 = ‘b’, K2 = ‘c’,K3 = ‘d’,W[0] = “abcd”,依次得到W[1]、W[2]和W[3]。接着,对W数组扩充40个新列,构成总共44列的扩展密钥数组。新列以如下的递归方式产生:

a.如果i不是4的倍数,那么第i列由如下等式确定:W[i]=W[i-4]⨁W[i-1]

b.如果i是4的倍数,那么第i列由如下等式确定:W[i]=W[i-4]⨁T(W[i-1])

其中,T是一个有点复杂的函数,函数T由3部分组成:字循环、字节代换和轮常量异或,其作用分别如下:

a.字循环:将1个字中的4个字节循环左移1个字节。即将输入字[b0, b1, b2, b3]变换成[b1,b2,b3,b0];

b.字节代换:对字循环的结果使用S盒进行字节代换;

c.轮常量异或:将前两步的结果同轮常量Rcon[j]进行异或,其中j表示轮数。轮常量Rcon[j]是一个字,其值见下表。

j

1

2

3

4

5

Rcon[j]

01 00 00 00

02 00 00 00

04 00 00 00

08 00 00 00

10 00 00 00

j

6

7

8

9

10

Rcon[j]

20 00 00 00

40 00 00 00

80 00 00 00

1B 00 0000

36 00 00 00

2、密钥扩展总结如下:

a)字转化:将初始密钥以列为主,转化为4个32 bits的字,分别记为w[0…3];

b)密钥扩展:用户将密钥扩展为一个扩展密钥。

  若i%4=0,则w[i]=w[i-4]⊕T(w[i-1]),否则w[i]=w[i-4]⊕w[i-1];

c)圈密钥选择:从扩展密钥中选出圈密钥,第一个圈密钥由扩展密钥中的前Nb个字节组成,第二个圈密钥由接下来的Nb个字节组成,以此类推。按照如下方式,依次求解w[i],其中i是整数并且属于[4,43];

注意:

1、圈密钥的比特总数为数据块长度与圈数加1的积。

2、密钥扩展另一种说法:

a.当Nk<=6时:1) W[0],W[1]...W[Nk]依次填充;2) 扩展:若I%Nk==0,Temp=T(w[i-1]),w[i]=w[i-Nk]⊕Temp;否则,w[i]=w[i-Nk]⊕w[i-1]。

b.当Nk>6时:1) W[0],W[1]...W[Nk]依次填充;2) 扩展:若I%Nk==0,Temp=T(w[i-1]),若I%Nk==4,Temp=S(Temp),w[i]=w[i-Nk]⊕Temp;否则,w[i]=w[i-Nk]⊕w[i-1]。

三、加密解密

AES加密过程涉及到4种操作:字节替代行移位列混淆轮密钥加

1、初始轮密钥加(AddRoundKey):将明文矩阵与子密钥矩阵的对应字节进行逐比特异或,明文矩阵⊕(W[0],W[1],W[2],W[3])--- AddRoundKey (ai,j,ki,j)=ai,j⊕ki,j=bi,j

2、Nr-1圈标准轮函数f

a.S盒变换(ByteSub):按字节进行;高行低列,查表可得。

b.行移位变换(ShiftRows):将每行进行循环左移;0行不移,i行左移i个字节。

c.列混合变换(MixColumns):将State乘以一个固定的矩阵A,对State进行逐列进行变换,直到4列都变换完毕。

d.圈密钥加:将状态矩阵与子密钥矩阵的对应字节进行逐比特异或

e.循环进行Nr-1轮。

3、最后一圈非标准轮函数:不进行列混合变换

解密

AES解密过程,解密过程仍为10轮,每一轮的操作是加密操作的逆操作。由于AES的4个轮操作都是可逆的,因此,解密操作的一轮就是顺序执行逆行移位、逆字节代换、轮密钥加和逆列混合。同加密操作类似,最后一轮不执行逆列混合,在第1轮解密之前,要执行1次密钥加操作。

四、AES算法特点 分组算法:分组长度128位;安全性:不存在弱密钥:对密钥的选择无限制,未发现弱密钥以及半弱密钥;抗攻击能力强:可以抵抗穷举攻击、线性攻击、差分攻击;适应性强:密钥长度可变,128、192、256位;;采用SP结构:

五、AES算法应用 无线网络:IEEE802.11i在数据加密方面定义的CCMP、WRAP和TKIP三种加密机制;SSL/TSL;语音、视频信息加密:微信小程序;车辆啊远程无钥进入(RKE)系统、数据库加密、收费系统、PLC等多项领域。

注:图片来源于网络!

如有错误、侵权,请联系笔者更改删除!!!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。