Key Selection). Основоположні принципи алгоритму виглядають таким чином:  
 · Загальне число біт циклових ключів дорівнює довжині блоку, помноженої на число циклів плюс 1 (наприклад, для довжини блоку 128 біт і 10 циклів потрібно 1408 біт циклового ключа). 
  · Ключ шифрування розширюється в Розширений Ключ (Expanded Key). 
  · Циклові ключі беруться з Розширеного ключа таким чином: перший циклової ключ містить перші Nb слів, другий - наступні Nb слів і т.д. 
  Розширення ключа (Key Expansion). 
  Розширений ключ являє собою лінійний масив 4-ех байтових слів і позначений як W [Nb * (Nr +1)]. Перші Nk слів містять ключ шифрування. Всі інші слова визначаються рекурсивно із слів з меншими індексами. Алгоритм вироблення ключів залежить від величини Nk: нижче наведена версія для Nk рівного або меншого 6 і версія для Nk більшого 6.Для Nk <6 або Nk=6 ми маємо: 
   KeyExpansion (CipherKey, W 
  {(i=0; i 
 {[j]=W [j-Nk] ^ SubByte (Rotl (W [j - 1])) ^ Rcon [j / Nk]; (i=1; i 
} 
 } 
   Як можна помітити, перші Nk слів заповнюються ключем шифрування. Кожне наступне слово W [i] виходить за допомогою EXOR попереднього слова W [i - 1] і слова на Nk позицій раніше W [i-Nk]. Для слів, позиція яких кратна Nk, перед EXOR застосовується перетворення до W [i - 1], а потім ще додається циклова константа. Перетворення містить циклічний зсув байтів в слові, позначений як Rotl, потім слід SubByte - застосування заміни байт. Для Nk> 6 ми маємо: 
  (CipherKey, W) 
  {(i=0; i 
 for (j=Nk; j 
 {[j]=W [j-Nk] ^ SubByte (Rotl (W [j - 1])) ^ Rcon [j / Nk]; (i=1; i <4; i + + ) W [i + j]=W [i + j-Nk] ^ W [i + j - 1]; [j +4]=W [j +4- Nk] ^ SubByte (W [j +3]) ; (i=5; i 
} 
				
				
				
				
			 } 
   Відмінність для схеми при Nk> 6 полягає у застосуванні SubByte для кожного 4-го байта з Nk. Циклова константа незалежить від Nk і визначається наступним чином: 
   Rcon [i]=(RC [i], «00», «00», «00») (2.4) 
   де: RC [0]=«01» [i]=xtime (Rcon [i - 1]) 
  Вибір циклового ключа.ий циклової ключ виходить із слів масиву циклового ключа від W [Nb * i] і доW [Nb (i +1)]. Це показано на малюнку 2.12. 
  Рис 2.12: Розширення ключа і вибір циклового ключа для Nb=6 і Nk=4. 
   Зауваження: Алгоритм вироблення ключів можна здійснювати і без використання масиву W [Nb * (Nr +1)]. Для реалізацій, в яких істотно вимога до займаної пам'яті, циклові ключі можуть обчислюватися на льоту за допомогою використання буфера з Nk слів. 
  Шифр ??Rijndael складається з: 
  · початкового додавання циклового ключа; 
  · Nr - 1 циклів; 
  · заключного циклу. 
  На псевдо-Сі це виглядає наступним чином: 
   Rijndael (State, CipherKey)