Как было сказано выше, алгоритм RC2 использует ключи шифрования размером от 8 до 1024 битов, т.е. от 1 до 128 байтов.
Расширение ключа подразумевает получение из ключа шифрования 16-битных фрагментов расширенного ключа , используемых в смешивающих раундах – по одному в каждой из 4 итераций каждого из 16 смешивающих раундов. Данная процедура выполняется в несколько шагов:
1. Инициализируется байтовый массив , используемый при расширении ключа:
, (6)
…
, (7)
где – исходный ключ шифрования, имеющий размер T байтов.
Остальные байты массива L обнуляются.
2. Инициализируются другие переменные, участвующие в расширении ключа:
T8=(T1+7)/8, (8)
, (9)
где T1 – размер ключа в битах,
T8 – эффективный размер ключа в байтах,
TM – битовая маска, учитывающая остаточные биты ключа, если его размер в битах не кратен 8.
3. В цикле по i от T до 127 выполняется следующая операция:
, (10)
где P – табличная замена, приведенная в табл.2.
Таблица 2
Таким образом, значение 0 заменяется на D9, 1 – на 78 и т.д.
Псевдослучайная таблица P сформирована на основе шестнадцатеричной записи дробной части числа π.
4. Вычисляется :
. (11)
5. В цикле i от 127-T8 до 0 выполняется следующее действие:
. (12)
6. Для использования в шифрующих преобразованиях 128-байтная последовательность представляется в виде 16-байтных слов :
. (13)