高级加密标准(AES)
块大小128
密钥大小为128、192和256位
每个密钥大小为10、12或14轮加密
以 AES-128 为例。
AES是一个替换置换网络(不是Feistel网络)。
首先将消息安排在元素为8比特的4 × 4矩阵中,向下填充,然后向右填充。
字节代换(S盒):对每个字节进行独立操作。这就给出了 AES 的非线性和混淆。
字节排列:行移位
列操作:列混淆
行移位和列混淆提供了 AES 中的扩散。
轮密钥加
这 10 轮加密过程之前会有一次密钥加法(因此,总共有 11 次密钥加法)。最后一轮稍有不同:没有列混淆操作。

AES 是一种面向字节的加密算法。被各轮操作处理的 128 位“状态”(state)被视为 16 个字节,并排列成一个矩阵的形式:

如:

矩阵中的各字节透过一个8位的S-box进行转换。这个步骤提供了非线性的变换能力。


将每一列分别混合,通过与矩阵相乘来实现:

每一列的四个字节透过线性变换互相结合。每一列的四个元素分别当作

派生轮密钥
xxxxxxxxxx91for i:=1 to 10 do2 T:=W[4i-1]<<<83 T:=SubBytes(T)4 T:=T⊕RC[i]5 W[4i]:= W[4i−4]⊕T6 W[4i+1]:= W[4i−3]⊕W[4i]7 W[4i+2]:= W[4i−2]⊕W[4i+1]8 W[4i+3]:= W[4i−1]⊕W[4i+2]9end轮密钥
常数