Как и RC5, алгоритм RC6 имеет гибкую структуру: помимо секретного ключа, параметрами являются:
· размер слов w; алгоритм RC6 шифрует блоками по 4 слова;
· количество раундов R;
· размер секретного ключа в байтах b.
Аналогично RC5, для уточнения параметров алгоритма, используемых в его конкретной реализации, применяется обозначение RC6-w/R/b. Поскольку в конкурсе AES 128-битный блок являлся обязательным, значение w фиксировано и равно 32. В спецификации алгоритма зафиксировано также количество раундов: R=20. Поскольку конкурс AES допускал использование ключей трех фиксированных размеров, рассмотрим три следующие варианты алгоритма: RC6-32/20/16, RC6-32/20/24 и RC6-32/30/32, совокупность которых мы и будем иметь далее в виду, говоря об «RC6».
Структура алгоритма приведена на рис.6. В алгоритме используется 20 раундов преобразований, перед которыми выполняется частичное входное отбеливание:
, (43)
, (44)
где B и D – текущие значения двух из четырех (A, B, C, D) обрабатываемых 32-битных субблоков,
и – первые два из используемых в алгоритме фрагментов расширенного ключа .
Рис.6. Структура алгоритма RC6
Аналогичным образом выполняется частичное выходное отбеливание:
, (45)
. (46)
В каждом i-м раунде алгоритма выполняются следующие действия:
, (47)
, (48)
, (49)
, (50)
где и – временные переменные,
количество битов вращения на переменное число битов определяется значением 5 младших битов параметра ( и ),
функция f() выполняет следующее квадратичное преобразование:
. (51)
В конце каждого раунда выполняется сдвиг субблоков – рис.6.
При расшифровывании подключи используются в обратном порядке, наложение подключей вместо сложения по модулю выполняется вычитанием, а также сдвиг субблоков выполняется в начале раунда и в обратную сторону. Преобразование f() не претерпело изменений (рис.7).