AES加密原理

本文详细介绍了AES加密算法,一种基于迭代和分组的对称密钥加密方式,涉及密钥扩展、圈密钥选择、S盒、行移位、列混合和圈密钥加等关键步骤,以及RIJNDAEL算法的迭代圈数和轮函数结构。
摘要由CSDN通过智能技术生成

 

 

AES是一个迭代的、分组密码加密方式,可以使用128 、192和256位密钥。与 公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。

通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结 构,在该循环中重复置换(permutation)和替换(substitution)输入数据,加之  算法本身复杂的加密过程,使得该算法成为数据加密领域的主流。AES加密算法 流程如图6-12所示。

在AES算法中,每一次变换操作产生的中间结果称为状态。将状态表示为二 维字节数组(每个元素为一个字节),包括4行,Nb列。Nb等于数据块长度除以 32 。例如,数据块长度为128时,Nb=4;数据块长度为192时,Nb=6 。同理,密 钥也可表示为二维字节数组(每个元素为一个字节),包括4行,Nk列。Nk等于 密钥块长度除以32。

圈密钥根据圈密钥产生算法由用户密钥产生。圈密钥加密由密钥扩展和圈密 钥选择两步完成。首先将用户的密钥进行密钥扩展,再从扩展密钥中选出圈密

钥。第一个圈密钥由扩展密钥中的前Nb个字组成,第二个圈密钥由接下来的Nb个 字组成,以此类推。最后获得的圈密钥位总数为数据块长度与圈数加l的乘积。

 

 

 

 

 

52ce919ccc7744a3956eafb40babf2c8.png

图6-12    AES加密算法流程

RIJNDAEL算法的迭代圈数Nr由Nb和Nk共同决定,可根据表6-2获得相应Nr 的值。

表6-2    RIJNDAEL算法迭代圈数Nr

3dc0819c497f44a5b7d682e5c088df6d.png

AES加密算法的轮函数采用代替/置换网络结构,包括S盒变换(ByteSub)、 行移位变换(ShiftRow)、列混合变换(MixColumn)、圈密钥加变换

(AddRoundKey)。下面介绍各种变换方式。

 

 

 

 

 

S盒变换是按字节进行的代替变换,是作用在状态中每个字节上的一种非线  性字节变换。首先将字节的值用它的乘法逆来代替,然后将获取的值按式(6-1) 进行仿射变换。

e4bc77651ef3412bb44331dabad6a94f.png

2.行移位变换

行移位变换对状态行进行循环移位。在行移位变换中,状态的后三行以不同 的移位值循环左移。第0行不移位,第1行向左移动C1字节,第2行向左移动C2字 节,第3行向左移动C3字节,移位表如表6-3所示。

表6-3    移位表

53b3e3a12243430297b3a29aa2a419a3.png

3.列混合变换

列混合变换是对状态的列进行混合变换。把状态中的每一列看作GF(28)上 的多项式,并与一个固定多项式c(x )相乘,然后与多项式x4+1进行取模运算,

其中c(x )可表示为

7894432598d749d2b9686798a259df7c.png

4. 圈密钥加变换

圈密钥加变换是利用圈密钥对状态进行模2相加的变换。圈密钥被简单地异

 

 

 

 

 

或到状态中去。其中,圈密钥长度等于数据块长度。

综上所述,AES加密算法由三部分组成:初始圈密钥加、Nr-l圈的标准轮函 数、最后一圈的非标准轮函数。

 

 

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lyx-0607

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值