從單一種子金鑰生成多組輪金鑰(w[]),大幅增加位元擴散度,提升抗密碼分析能力。
輸入 4 位元組陣列,左移 1 位:[a,b,c,d] → [b,c,d,a]。類似 ShiftRows 但僅操作單行金鑰調度。
對 4 位元組各自查 Sbox[x,y] 替換。例:0x27 → x=2,y=7 → Sbox[2,7]=0xCC。邏輯與加密 SubBytes 相同。
每列 4 位元組,左欄為 GF(2^8) 中 2 的冪次:
Rcon[1] = 01 00 00 00
Rcon[2] = 02 00 00 00
Rcon[3] = 04 00 00 00
...
Rcon[i] = Rcon[i-1] * 0x02 (GF(2^8) 乘法)
特殊:0x80 * 0x02 = 0x1B (左移溢位後 XOR 0x1B)
需 Nr+1 列(如 128-bit 金鑰 Nr=10,需 11 列)。
for row = Nk to 4*(Nr+1)-1
temp = w[row-1]
if row % Nk == 0
temp = SubWord(RotWord(temp)) XOR Rcon[row/Nk]
else if Nk == 8 and row % Nk == 4
temp = SubWord(temp) // 僅 256-bit 金鑰額外處理
w[row] = w[row-Nk] XOR temp
Nk 列前該列 XOR 經處理的前一列。Nk 列施加 RotWord+SubWord+Rcon。