Форум программистов, компьютерный форум CyberForum.ru

"Изощренный" метод Цезаря - C++

Восстановить пароль Регистрация
 
ZAndrey
0 / 0 / 0
Регистрация: 10.09.2014
Сообщений: 57
20.11.2014, 22:06     "Изощренный" метод Цезаря #1
Разработать программу для шифрования и дешифрирования текста, хранящегося в файле, основанную на методе Цезаря , но более «изощренную»: ключ, используемый для кодирования символа, будет зависеть от позиции символа в исходном тексте. Для того, чтобы шифрование и дешифрирование можно было бы выполнять одним и тем же способом, вместо сложения кода символа с постоянным ключем (как у Цезаря) для переменных ключей используйте операцию «исключающее ИЛИ» (<код символа> ^ <ключ>) .
При кодировании с переменным ключем один и тот же символ исходного текста будет представлен в зашифрованном тексте различными символами, что существенно усложнит «взлом шифра». Ключи должны представлять собой целые числа, определяемые путем преобразования слов кодового блокнота по следующему алгоритму:
• ключ для k-го по порядку символа в исходном тексте вычисляется как сумма (по модулю 256) кодов символов k-го по порядку слова кодового блокнота.
• Если кодовый блокнот имеет слов меньше, чем количество символов в исходном тексте, то по исчерпании слов в нём перейти к первому слову и продолжить кодирование.
Целесообразно сначала на основе кодового блокнота сформировать по заданному правилу целочисленный массив ключей, который затем будет использоваться при шифровании. Получение массива ключей оформить в виде отдельной функции.
Исследовать статистическую зависимость символов в закодированном тексте от соответствующих им символов исходного текста (сколько каких кодов одного и того же исходного символа получено) от размера кодового блокнота для заданного исходного текста. Чем меньше полученная статистическая зависимость, тем сложнее распознать текст, не зная алгоритма кодирования и текста кодового блокнота. Статистические результаты по конкретному символу исходного текста представить в виде таблицы 16х16, по аналогии с кодировочными таблицами. Исследование и вывод таблиц результатов следует выполнять в режиме диалога, последовательно вычисляя и выводя результаты для одного запрашиваемого символа.
Для большей достоверности статистических результатов в качестве исходного текста и кодового блокнота использовать текстовые файлы размером не менее 2 Кбайт.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2014, 22:06     "Изощренный" метод Цезаря
Посмотрите здесь:

C++ "cin","cout" на "printf","scanf"
C++ кодирование методом "Цезаря"
C++ 2 Программы. На "целые числа и системы счисления" и на "метод деления отрезка пополам"
Создайте вектор, хранящий десять строковых значений "zero", "one", ..., "nine" C++
Что означают команды "fun", "my_max", "my_min" в C++? C++
C++ Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из сообщений "Да", "Нет", "На
На C++ в строке после символа - "+" поставить символ "*" и посчитать сколько "+" C++
C++ Разработка прикладной программы "Шифрование" (методом Цезаря)

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 12:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru