密码复习——AES

AES是一种分组加密算法,其基本操作包括字节代换、行移位、列混合和轮密钥加。明文以128位字节矩阵形式排列,通过9轮循环加密,最后一轮不进行列混合。密钥长度可为128、192、256位,初始128位密钥经扩展后用于每轮加密。密钥拓展过程中涉及字循环、字节代换和轮常量异或。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AES——分组加密

明文的固定长度128位,密钥长度可以是128、192、256位

按明文与密钥长度都是128位来解释AES的加密过程:

在这里插入图片描述

在AES中,明文是以字节的形式排列,一个字节8bit位,排列如下:
在这里插入图片描述

AES的整体加密流程:
在这里插入图片描述

其中最后一轮第十轮是没有列混合的

初始变换

初始变换就是将明文的字节矩阵和子密钥矩阵进行异或:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gdQpEBvY-1684913979234)(C:\Users\32219\AppData\Roaming\Typora\typora-user-images\image-20230524151959959.pn
g)]

关于子密钥的产生,在下面有说明。

9轮循环

字节代换

在这里插入图片描述

就是经过一个字节代换的表,进行代换,很好理解。
在这里插入图片描述

行移位

在这里插入图片描述

第一行不动,第二行左移动一个字节,第二行左移动2个字节,第二行左移动3个字节

在这里插入图片描述

很easy。

列混合

将输入的4*4矩阵左乘一个给定的4 * 4矩阵。

在这里插入图片描述
在这里插入图片描述

计算的方式并不是简单的矩阵相乘,是在GF(2^8)域上的乘法,可以参考另一篇文章,密码学数学基础或者ECC加密。

轮密钥加

在这里插入图片描述

与子密钥进行一一异或,下面是关于密钥拓展。

密钥拓展

初始是128bit的密钥,转换成和明文一样的字节排列顺序:

在这里插入图片描述

之后进行拓展,拓展的规律:

1、如果i不是4的倍数 W[i]=W[i-4]^W[i-1]
2、如果i是4的倍数 W[i]=W[i-4]^T(W[i-1])

函数T由三部分组成:字循环、字节代换、轮常量异或,轮常量异或的表如下

在这里插入图片描述

字循环

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

在这里插入图片描述

字节代换

对字循环的结果使⽤S盒进⾏字节代换。

在这里插入图片描述

轮常量异或

将前两步的结果同轮常量Rcon[j]进⾏异或,其中j表示轮数。

在这里插入图片描述

拓展的结果:

在这里插入图片描述

最后梳理一下AES的整体的加密过程:

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值