Здравствуйте!
Нужно мне в свою C++ программу вставить шифрование файла с помощью RC5. Алгоритм открытый, примеров с реализацией шифрования одного блока много.
Описание на руском: http://ru.wikipedia.org/wiki/RC5
Теория на английском: http://theory.lcs.mit.edu/~rivest/Rivest-rc5rev.pdf
Исходник с примером: http://paste.org.ru/?f8go6z
Данный исходник подходит для шифрования двух 32-х битных слов (двух WORD).
Вопрос. А как шифровать байтовый поток данных произвольной длинны?
Например, имеем 20 байт.
1. Выделяем первые 8 байт, шифруем ключем.
2. Выделяем следующие 8 байт, шифруем тем же ключем.
3. Выделяем следующие 4 байта, дополняем нулями, шифруем тем же ключем.
Так чтоли? То есть получается, что одинаковый набор символов, кратный 8 байтам и выровненный на 8 байт, будет в зашифрованном виде представляться одной и той же зашифрованной последовательностью?
Пример на пальцах. Имеем поток ASCII-кодов следующих символов (условно разбит на строки):
ABCDEFGH
djkfhdfk
ABCDEFGH
pouwerbe
Зашифрованный поток будет иметь, к примеру, такой HEX-вид:
65C178B284D197CC
2F42B3B70369FC92
65C178B284D197CC
F7C013AC5B2B8916
То есть, первая и третья зашифрованные строки будут одинаковы. Так и должно быть? Или я неправильно понял, как надо использовать этот алгоритм?