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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ZAndrey
0 / 0 / 0
Регистрация: 10.09.2014
Сообщений: 57
#1

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

20.11.2014, 22:06. Просмотров 269. Ответов 0
Метки нет (Все метки)

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

C++ кодирование методом "Цезаря"
C++ как вызвать метод "верхнего" из вложенного класса
C++ Исправить код С++ "Метод Гаусса с выбором главного элемента по строке"
Метод "игрок берет все карты" не срабатывает как надо C++
C++ Метод "Золотого сечения". Программа не работает под Borland 3.1
C++ Разработка прикладной программы "Шифрование" (методом Цезаря)
Проверьте код,"численные методы,метод трапеций" C++
C++ Нужно написать программу на тему "Метод коллокации"
C++ Класс "Вокзал", сделать метод прибытия поезда
C++ Расскажите про "тру" метод парсинга строки
C++ Сортировка элементов массива ("метод пузырьков")
C++ Создать класс "Дерево" и метод, который выводит сумму узлов дерева

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

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

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