AES算法详解

 

时间:2021/12/20

 

一.AES加密算法#

1.AES分组长度、密钥长度、轮数的关系#

AES的分组长度为128bit密钥长度是可选的分别为128/192/256bit对应的轮数分别为10/12/14

 

2.加密流程图#

上图以密钥长度为128bit为例一共有10轮每一轮有4步分别是字节代换行移位列混淆和轮密钥加其中在第一轮开始之前要先进行一个轮密钥加然后在最后一轮也就是第十轮要少一次列混淆总的来说多一次轮密钥加少一次列混淆

 

3.AES的分组#

分组对于输入的128bit数据有16个字节把四个字节作为一组可以形成一个4*4的矩阵

 

4.AES的密钥生成#

轮密钥的生成在使用128bit密钥的情况下需要进行10轮操作也就是进行11次轮密钥加需要11个轮密钥若一列是4个字节则一轮需要4列也就是128bit),11轮需要44列也就是在原来密钥的情况下还要产生40列新列的产生方法如上面的公式所示

 

5.字节代换(S盒) #

字节代换S):之前说过将输入的一个明文分组作为一个4*4的矩阵矩阵的每个位置都是一个字节即8bit)。AESS盒是一个16*16的矩阵所以在进行字节代换时将该字节的前4位作为S盒的行号后4位作为S盒的列号将明文分组的字节替换成S盒中对应的字节

 

6.行移位#

行移位第一行整体不移位第二行整体左移一个字节第三行整体左移两个字节第四行整体左移三个字节

 

7.列混淆#

列混淆如上图所示列混淆就是在每一列的左边乘上一个矩阵来进行变换

 

8.轮密钥加#

轮密钥加将上一个运算的结果与轮密钥进行异或

 

 

二.AES解密算法#

从上图的解密算法可以看出来AES的加密算法和解密算法并不一样如果解密是加密的逆过程则输入密文后应该进行轮密钥加行移位求逆和字节代换求逆而实际上进行的是轮密钥加字节代换求逆行移位求逆列混淆求逆和密钥混淆求逆加)。

 

 

三.AES的特点#

 

作者:machi

出处:https://www.cnblogs.com/machi12/p/15713092.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @     阅读(5600)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2019-12-20 Android小记(整理一下自己犯过的错误)
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示