高级加密标准(AES)算法详解
AES 算法简介
高级加密标准(Advanced Encryption Standard,AES)是美国联邦政府采用的分组密码标准,由比利时密码学家 Joan Daemen 和 Vincent Rijmen 设计,又称 Rijndael 加密法。该标准于 2001 年 11 月 26 日由美国国家标准与技术研究院(NIST)发布于 FIPS PUB 197 文件,2002 年 5 月 26 日生效,旨在替代数据加密标准(DES)。1999 年 4 月从 15 个候选算法中筛选出 5 个入围方案,2000 年 10 月选定 Rijndael 算法,2001 年正式确立为 AES。
AES 算法参数
采用代换 - 置换网络 (SPN) 结构,加密和解密操作在 4x4 字节矩阵(称为状态)上进行。AES 算法的分组大小固定为 128 比特,根据密钥长度的不同共分为 3 个版本,分别为 AES-128(10 轮),AES-192(12 轮) 和 AES-256(14 轮)。

AES 算法状态矩阵
AES 算法轮函数
Xi+1 = F(Xi, RKi) = RKA(RKi) ○ MixColumn ○ ShiftRow ○ SubByte(Xi)
轮函数 F 分为 4 步:
(1)字节替换 (SubByte):将状态矩阵中的 16 个字节通过 S 盒进行非线性代换。如下图所示:

S 盒的查找表和其逆查表如下图所示:

S 盒查找表

S 盒逆查表
(2)行移位 (ShiftRow):将状态矩阵的第 j 行循环移位 j 个字节。如下图所示:

(3)列混合 (MixColumn):将状态矩阵的每一列左乘 MDS 矩阵 M。如下图所示:








