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

Может кто-нибудь объяснить, как работает расписание клавиш RC2 (особенно в самом начале)? я знаю, что используется little endian, но моя реализация не работает ни для одного ключа, кроме "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 даже больше не используется, но я все еще хотел бы знать

2 ответа

Решение

RFC говорит:

Алгоритм расширения ключа начинается с помещения предоставленного Т-байтового ключа в байты 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,

Расписание ключей RC2 правильно определено в RFC 2268, который определяет RC2

Другие вопросы по тегам