AES算法基本结构

分组长度和密钥长度可以指定为128位,192位和256位。一般128位密钥需要10轮加密。
加密主要分为4个部分:字节代换、行位移、列混合、轮密钥加,最后一轮不执行列混合,第一轮前将明文和原始密钥进行一次XOR或者加密操作。
下面是加密和解密过程
在这里插入图片描述

1. AES加密

1.1 字节代换

也就是S盒和逆S盒分别对应加密和解密。

1.1.1 S盒

在这里插入图片描述怎么来的可以自行了解,不多赘述了。

1.1.2 逆S盒

在这里插入图片描述
同理其实也是有计算过程的。

1.2 行移位

就是简单的左移操作。当密钥是128比特,状态矩阵的第0行左移0字节,第1行左移1字节,第2行左移2字节,第3行左移3字节。状态矩阵是把128比特按照从上到下,从左到右的顺序排列,从而就变成了4x4矩阵,每个矩阵单元长度为8比特。行移位逆变换就是相反,左移变成右移。

1.3 列混合

经过行移位的状态矩阵与固定矩阵下相乘。计算过程如下图所示:
在这里插入图片描述
列混合逆运算如下图所示:
在这里插入图片描述

1.4 轮密钥加

将128位密钥Ki同状态中数据进行逐位异或。逆运算和轮密钥加运算完全一致,这是因为异或两次就还原了。

还有一点是关于密钥扩展的,因为整个过程比较繁琐,有兴趣的可以自行AI查阅下资料。

2.AES解密

2.1 交换行移位

~

2.2 逆向字节代换

~

2.3 交换轮密钥

~

2.4 逆向列混合

~
注:后续有时间我再更新补全点,这篇就暂时先这样, ByeBye~~

更多推荐