Расписание ключа RC2

Кто-то может объяснить, как ключевое расписание RC2 работает (особенно самое начало его)? я знаю, что это использует прямой порядок байтов, но моя реализация не работает ни на какой ключ кроме "0000 0000 0000 0000"

Test Vector
Key = 88bc a90e 9087 5a
Plaintext = 0000 0000 0000 0000
Ciphertext = 6ccf 4308 974c 267f

Я предполагаю, что первое, что нужно сделать с ключом состояло бы в том, чтобы изменить его в

bc88 0ea9 8790 5a

и да я знаю, что RC2 больше даже не используется, но я все еще хотел бы знать

1
задан skaffman 5 May 2012 в 16:14
поделиться

2 ответа

В RFC говорится:

Алгоритм расширения ключа начинается с помещения предоставленного T-байтового ключа в байты L [0], ..., L [T-1] ключа буфер.

Итак, если ваш ключ 88bc a90e 9087 5a , вы получите L [0] = 0x88, L [1] = 0xbc, ... L [6] = 0x5a .

Нет необходимости учитывать здесь порядок байтов.

Если вы хотите обрабатывать ключевой буфер как 16-битные слова, вы получите:

K [i] = L [2 * i] + 256 * L [2 * i + 1]

Т.е. K [0] = 0xbc88, K [1] = 0xa90e, K [2] = 0x8790 . L [7] назначается только позже на этапе расширения ключа, поэтому, строго говоря, K [3] не определено в этой точке. Не стесняйтесь выбирать любое значение, которое хотите, поскольку это не имеет значения для алгоритма. Если вы выберете 0, вы получите K [3] = 0x005a .

1
ответ дан 3 September 2019 в 00:13
поделиться

График ключей RC2 правильно определен в RFC 2268, определяющем RC2

1
ответ дан 3 September 2019 в 00:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: