高级加密标准
AES概述¶
\(N_b\) = 128位
\(N_k\) | \(N_r\) |
---|---|
128bit | 10 |
192bit | 12 |
256bit | 14 |
\(N_b\);分组长度,\(N_k\):密钥长度,\(N_r\):轮数
基本结构¶
AES为分组密码,每组长度相等,在AES标准规范中,分组长度只能是128位,也就是说,每个分组为16个字节(每个字节8位)
密钥的长度可以使用128位、192位或256位。密钥的长度不同,推荐加密轮数也不同
加密公式:\(C=E(K,P)\)
在加密函数\(E\)中,会执行一个轮函数,并且执行10次这个轮函数,这个轮函数的前9次执行的操作是一样的,只有第10次有所不同。也就是说,一个明文分组会被加密10轮。AES的核心就是实现一轮中的所有操作。
AES的处理单位是字节,128位的输入明文分组P和输入密钥K都被分成16个字节,分别记为\(P = P_0 P_1\dots P_{15}\quad K=K_1K_2\dots P_{15}\)
一般地,明文分组用字节为单位的正方形矩阵描述,称为状态矩阵。在算法的每一轮中,状态矩阵的内容不断发生变化,最后的结果作为密文输出。该矩阵中字节的排列顺序为从上到下、从左至右依次排列,如下图所示:
类似地,128位密钥也是用字节为单位的矩阵表示,矩阵的每一列被称为1个32位比特字。通过密钥编排函数,该密钥矩阵被扩展成一个44个字组成的序列