AES是一种广泛使用的对称加密算法,用于保护数据的安全性。
AES属于分组加密算法,明文长度固定为128位,密钥长度可以是128、192、256位。
密钥长度每增加64位,算法的循环次数则相应增加2轮。
本文介绍密钥长度为128位的AES算法。
16字节数据的排列方式如下图
算法概述
一、初始变换
明文和密钥的异或运算。相同位置的明文和密钥都化成二进制形式,进行异或运算。
二、循环运算
1. 字节代换
将矩阵中的元素通过查表进行代换。表格数据如下
2. 行移位
第一行保持不变,第二行向左移动1个字节,第三行向左移动2个字节,第四行向左移动3个字节。(循环移动)
3. 列混合
将输入的矩阵,左乘一个给定的矩阵。给定的矩阵为
此处的乘法规则如下:
4. 轮密钥加
将输入的矩阵与的轮密钥矩阵进行异或。轮密钥由密钥扩展获得。
密钥扩展是一列一列的进行扩展。每4列组成一个完成的轮密钥。根据是否为4的倍数,使用不同的扩展方法,得到10轮计算所需的轮密钥。
函数包含3个运算:字循环、字节代换和轮常量异或。
其中,轮常量是给定的:。
三、最终轮
最终轮运算和前面的循环运算的区别是最终轮没有列混合运算,其余运算均相同。