Здравствуйте!
Нужно мне в свою C++ программу вставить шифрование файла с помощью RC5. Алгоритм открытый, примеров с реализацией шифрования [u]одного[/u] блока много.Описание на руском: 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То есть, первая и третья зашифрованные строки будут одинаковы. Так и должно быть? Или я неправильно понял, как надо использовать этот алгоритм?
> Описание на руском: http://ru.wikipedia.org/wiki/RC5http://ru.wikipedia.org/wiki/%D0%A0%D0%B...
> Вопрос. А как шифровать байтовый поток данных произвольной длинны?
> Так чтоли? То есть получается, что одинаковый набор символов, кратный 8 байтам
> и выровненный на 8 байт, будет в зашифрованном виде представляться одной
> и той же зашифрованной последовательностью?И менно так и получается, если применять блочный шифр к потоку _в_лоб_.
> То есть, первая и третья зашифрованные строки будут одинаковы. Так и должно
> быть? Или я неправильно понял, как надо использовать этот алгоритм?Конечно! :)
>[оверквотинг удален]
>> Описание на руском: http://ru.wikipedia.org/wiki/RC5
> http://ru.wikipedia.org/wiki/%D0%A0%D0%B...
>> Вопрос. А как шифровать байтовый поток данных произвольной длинны?
>> Так чтоли? То есть получается, что одинаковый набор символов, кратный 8 байтам
>> и выровненный на 8 байт, будет в зашифрованном виде представляться одной
>> и той же зашифрованной последовательностью?
> И менно так и получается, если применять блочный шифр к потоку _в_лоб_.
>> То есть, первая и третья зашифрованные строки будут одинаковы. Так и должно
>> быть? Или я неправильно понял, как надо использовать этот алгоритм?
> Конечно! :)
>[оверквотинг удален]
> djkfhdfk
> ABCDEFGH
> pouwerbe
> Зашифрованный поток будет иметь, к примеру, такой HEX-вид:
> 65C178B284D197CC
> 2F42B3B70369FC92
> 65C178B284D197CC
> F7C013AC5B2B8916
> То есть, первая и третья зашифрованные строки будут одинаковы. Так и должно
> быть? Или я неправильно понял, как надо использовать этот алгоритм?Дополнять шифуемое сообщение до длины кратной длине блока блочного шифра или нулями или случайным шумом. А еще лучше не пользоватьться режимом ECB а пользоваться например CBC или n-битовым OFB.