AES密码算法学习笔记

107 阅读1分钟

在这里插入图片描述

AES是一种广泛使用的对称加密算法,用于保护数据的安全性。

AES属于分组加密算法,明文长度固定为128位,密钥长度可以是128、192、256位。

密钥长度每增加64位,算法的循环次数则相应增加2轮。

本文介绍密钥长度为128位的AES算法。

16字节数据的排列方式如下图

在这里插入图片描述

算法概述

在这里插入图片描述

一、初始变换

明文和密钥的异或运算。相同位置的明文和密钥都化成二进制形式,进行异或运算。

在这里插入图片描述

二、循环运算

1. 字节代换

将矩阵中的元素通过查表进行代换。表格数据如下

在这里插入图片描述

2. 行移位

第一行保持不变,第二行向左移动1个字节,第三行向左移动2个字节,第四行向左移动3个字节。(循环移动)

3. 列混合

将输入的4×44 \times 4矩阵,左乘一个给定的4×44 \times 4矩阵。给定的矩阵为

在这里插入图片描述

此处的乘法规则如下:

在这里插入图片描述

4. 轮密钥加

将输入的4×44 \times 4矩阵与4×44 \times 4的轮密钥矩阵进行异或。轮密钥由密钥扩展获得。

密钥扩展是一列一列的进行扩展。每4列组成一个完成的轮密钥。根据是否为4的倍数,使用不同的扩展方法,得到10轮计算所需的轮密钥。

在这里插入图片描述 函数gg包含3个运算:字循环、字节代换和轮常量异或。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

其中,轮常量是给定的:0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x1B,0x360x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x1B,0x36

三、最终轮

最终轮运算和前面的循环运算的区别是最终轮没有列混合运算,其余运算均相同。