Вариант 2-го практического задания для групп 110, 111 (2007)
Генератор ключа шифра должен запросить у пользователя желаемую длину Lkey шифр-ключа (целое от 16 до 30 000), затем инициализировать алгоритм генератора псевдослучайной последовательности значением сотых долей секунд текущего времени. После чего генератор должен вывести следующую ключевую последовательность байтов в шестнадцатеричном виде (по 2 цифры на байт). Формат следования данных в последовательности может быть, например, таким:
b0 | b1 | b2 | b3 | b4 | b5 | b6 | ... | b6 + KL | ||
Lkey | Lpreamble | Ltail | Key | |||||||
где:
Шифратор должен ввести сгенерированную первым модулем ключевую последовательность, а затем ввести текст, оканчивающийся комбинацией CTRL+Z (символ с кодом 1Аh), и вывести шифр-последовательность в шестнадцатеричном виде, предваренную случайной преамбулой и оканчивающуюся случайным суффиксом. Формат следования данных в шифр-последовательности может быть, например, таким:
b0 | ... | bLpreamble − 1 | bLpreamble | ... | bLpreamble + Lcipher − 1 | bLpreamble + Lcipher | ... | bLpreamble + Lcipher + Ltail − 1 |
Preamble | Cipher | Tail | ||||||
Длина преамбулы и суффикса порождается генератором шифр-ключа и содержится в ключевой последовательности.
Дешифратор, аналогично шифратору, должен сначала ввести ключевую последовательность, затем шифр-последовательность и вывести расшифрованный текст.
В качестве возможного усложнения задания предлагается реализовать в шифраторе: