Расписание ключей RC2 - PullRequest
1 голос
/ 30 мая 2010

Может кто-нибудь объяснить, как работает расписание клавиш 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 ]

1 голос
/ 31 мая 2010

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.

1 голос
/ 30 мая 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...