Rijndael密钥生成方案

AES（Rijndael）使用一个密钥生成方案把一个短密钥扩展成各轮用于加密的子密钥。该方案的名称就叫做Rijndael密钥生成方案（Rijndael key schedule）。对于不同位数的原始密钥(128, 192, 256)，加密的轮次是不相同的，但每一轮都需要与128位的密钥進行异或，而根据原始密钥生成各轮子密钥的过程就是由Rijndael密钥生成方案完成的。

 公共操作(Common operations) 
在描述密钥生成的流程之前，有必要先阐述Rijndael密钥生成方案所使用的一些公共操作。

 旋转(Rotate) 
对于下面32位的字(十六进制)：
 1D 2C 3A 4F
旋转操作会把它循环左移8位(一个字节)，即左边的高8位会成为右边的低8位，结果如下：
 2C 3A 4F 1D

 求2的幂次操作(Rcon) 
Rcon在Rijndael的参考文档里称为求2的幂次。需要注意的是这个操作不是作用在常规的整数域中的，它是作用在Rijndael有限域中的。2的多项式形式为，计算的公式为：

或者等价于，

 金鑰排程(The key schedule) 
在 AES 中定義了幾個參數：
  以 32 位元字組（Word）為單位的金鑰長度，例如：AES-128 為四個字組、AES-192 為六個字組、AES-256 為八個字組。
  是需要的回合金鑰數量，例如：AES-128 需要 11 把回合金鑰、AES-192 需要 13 把回合金鑰、AES-256 需要 15 把回合金鑰。
 , , ...  是總共需要擴展的字組數目。

RotWord 被定義為一個左循環移位（1 次移動1 byte）的操作：

SubWord 被定義為一個利用 AES 的S-box讓字組做非線性轉換的操作：

最後依照 i 值（）做下列運算：

Category:高级加密标准
Category:密钥管理