Форум программистов, компьютерный форум, киберфорум
Наши страницы
maryyyya
Войти
Регистрация
Восстановить пароль
Оценить эту запись

Задача на словарь Dictionary.

Запись от maryyyya размещена 05.06.2019 в 12:59

В фильме «Сокровище нации: Книга тайн» ключ от сокровищ закодирован шифром Плейфера. Помоги-те герою Николаса Кейджа Бенджамину Гейтсу получить ключ!
Для взлома этого шифра используются таблицы частот биграмм. Биграмма — это две идущие подряд буквы. Например, слово ШИФРОВАНИЕ разбивается на биграммы так: ШИ ФР ОВ АН ИЕ.
При шифровании биграммами из сообщения удаляются все символы, кроме букв , которые приводятся к одному регистру. После чего сообщение разбивается на биграммы.
Если биграмма состоит из двух одинаковых букв, между ними вставляется буква Ъ (в английском тексте — Q). Если сообщение содержит нечетное число символов, то к последнему символу добавляется буква Ъ (в английском тексте — Q).
Например, сообщение «коммуникации» дает биграммы
КО ММ УН ИК АЦ ИИ
Вторая биграмма разбивается буквой Ъ. Заметьте, что после этой разбивки последующие биграммы изменяются, кроме того, в сообщении становится нечетное количество символов, и в конец добавляет-ся Ъ, так что в результате получим биграммы
КО МЪ МУ НИ КА ЦИ ИЪ
Аналогично, для сообщения на английском «communications» имеем
CO MM UN IC AT IO NS
После разбивки второй биграммы и добавления недостающего символа в конце получаем
CO MQ MU NI CA TI ON SQ
Написать консольное приложение, которое запрашивает у пользователя текстовый файл, предположи-тельно содержащий некий литературный текст. Приложение должно составить таблицу частот би-грамм и вывести ее в файл. На консоль вывести первые пять самых часто встречающихся биграмм с их частотами.
Проверьте работу вашей программы на русском и английском текстах. Текст лучше считывать не за один раз, а построчно, обрабатывая последовательно каждую строку и изменяя значения в словаре.
Размещено в Без категории
Просмотров 171 Комментарии 1
Всего комментариев 1
Комментарии
  1. Старый комментарий
    Задача довольно сложная. Одно дело написать программу, которая зашифровывает текст. Совсем другое дело - программа, которая дешифрует закодированный текст. Следует отметить, что английский и русский вариант шифра Плейфера несколько различаются. Для английского варианта используется матрица размером 5 × 5, а буквы i и j считаются одной буквой. В русском варианте используется матрица размером 4 × 8. (буквы е и ё не различаются).
    Алгоритм шифровки текста проще того, что вы описали...
    0. После выброса из текста всех знаков препинания и пробелов, собственно и начинается шифрование.
    1. Сначала (в цикле) осуществляется просмотр пар символов и если встречаются равные символы, то вставляется Ъ
    2. Проверяется длина строки. И если её длина нечётное число, то добавляется Ъ.
    3. Длина ключа как правило 8 - 16 символов, но может быть и все 32 символа
    4. При дешифровке просчитывается частота всех пар символов с учётом того, что в русском языке нет слов начинающихся с букв Ъ, Ы, Ь
    5. Программа осуществляет перебор биграмм по частоте и после замены одних биграмм другими, проверяет текст на наличие в нём осмысленных слов. (используется словарь).
    6. Если количество таких слов превышает некоторую наперёд заданную величину (например 90%), то программа выдаёт такой текст пользователю для оценки (и возможно доработки).
    7. Код программы довольно громоздкий. В этом смысле такие модификации шифра Плейфера как шифр "два квадрата" и шифр "четыре квадрата" более просты (но сами шифры обладают повышенной криптостойкостью по сравнению с шифром Плейфера)
    Запись от нтч размещена 06.06.2019 в 18:31 нтч вне форума
    Обновил(-а) нтч 06.06.2019 в 18:33
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru