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~~