|
629 / 41 / 25
Регистрация: 25.04.2017
Сообщений: 512
|
|
Написать дешифратор22.10.2018, 17:22. Показов 9161. Ответов 151
Метки нет (Все метки)
Здравствуйте, можете помочь сделать проект, задача интересная: Дешифратор Виженера.
Вот начал с "модели данных" ,написал что программа должна делать: Открыть (загрузить) зашифрованный текст Сохранить отчет о дешифровке Вывести время дешифровки Выбор словаря ?! Выбор алфавита(автоматический ?!)?! Обрабатывать исключения Найти длину ключа: Разбить(сдвинуть) открытый текст на n столбцов Вычислим автокорреляционные коэффициенты для сдвигов t = 1 , … , n , где n максимальная длина ключа Вычислить индекс совпадений для сдвигов t = 1 , … , n , Найти ключ: Двигать столбцы с определенным сдвигом, равным m, где m = алфавит - 1 Вычислить взаимные индексы совпадений для k -1 уже разбитых столбцов, где k длина ключа Найти максимальные взаимные индексы совпадений для каждой из строк В конечном итоге получаем алфавит - 1 вероятных ключей, но только один из них является настоящим. Теперь нужно его определить не задействуя человека: Первый вариант это словари, если в словаре ключа нет, ключ не осмысленный, то второй вариант вычислить корреляционную сумму. ?! - пока не знаю как это реализовать. Получается из того, что я вам написал нужно выписать существительные - они потенциальные классы, потом нарисовать схему: обозначить связи наследование, агрегацию, в этом пока не понятно. Выписал некоторые, вот что получилось: Названия будут на английском , а пока что: Контроль ошибок Финальная расшифровка Индекс совпаений Взаимный индекс совпадений Автокорреляция ВыборАлфавита СвигСтолбцов
0
|
|
| 22.10.2018, 17:22 | |
|
Ответы с готовыми решениями:
151
Цезарь (дешифратор) Дешифратор Цезаря Шифратор/дешифратор |
|
629 / 41 / 25
Регистрация: 25.04.2017
Сообщений: 512
|
|
| 22.10.2018, 19:28 [ТС] | |
|
ashsvis, не понял? Что вы имеете в виду?
0
|
|
|
|
||
| 22.10.2018, 19:53 | ||
|
Может Ваш случай подходит под стандартные описанные алгоритмы шифрования и дешифрования? В Википедию, наконец, залесть...
0
|
||
|
629 / 41 / 25
Регистрация: 25.04.2017
Сообщений: 512
|
||
| 22.10.2018, 19:59 [ТС] | ||
|
0
|
||
|
|
||||||||||
| 23.10.2018, 09:47 | ||||||||||
|
ashsvis, собственно, тут у человека уже есть разработанное приложение, но оно не структурировано и не понятно вообще как работает, не говоря про расширение функциональности. worldandlife, давайте начнем с простого, подумаем, а что же нам надо (вы это сделали вот здесь) Нам нужны: 1. Класс для работы с зашифрованным текстом 2. Класс логирования - я бы тут вообще пошел бы путем наименьшего сопротивления и использовал бы вообще отдельную, готовую библиотеку NLog. для 4. Наследуемый Абстрактный класс словаря - думаю, что нужен, не зная сам алгоритм Виженера 5. Наследуемый Абстрактный класс алфавита - вот здесь не уверен, но все же. для 6. Класс работы с ключем Добавлено через 1 минуту кстати, вот под ключи нужен Абстрактный наследуемый класс ключа Добавлено через 3 минуты worldandlife, не плохо было бы расписать сам алгоритм Вижинера, подробно и как он действует при Шифровании И что нужно делать при Дешифрации При этом не языком программирования, а простым и ясным научным языком.
1
|
||||||||||
|
629 / 41 / 25
Регистрация: 25.04.2017
Сообщений: 512
|
|||
| 23.10.2018, 16:59 [ТС] | |||
|
Так-с ну тогда расскажу
Шифр Вижинера: https://ru.wikipedia.org/wiki/... 1%80%D0%B0 Автокорреляционный метод: https://ru.wikipedia.org/wiki/... 0%BE%D0%B4 Индекс совпадений: https://ru.wikipedia.org/wiki/... 0%B8%D0%B9 выше ссылки на статьи из Википедии. Криптоанализ Виженера состоит из 2-х этапов: 1. Нахождение длины ключа 2. Найти сам ключ Чтобы найти длину ключа я использую автокорреляционный метод, индекс совпадений(ИС) тоже нахожу, но для отчета. Чтобы найти ИС , нужно : Далее считаем по формуле ИС для кажого столбца; Теперь нужно найти сам ключ. Для этого я использую взаимный индекс совпадений(мИС) Также разбиваем наш закрытый текст на t столбцов, затем нужно найти мИС для каждой пары строк, где количество пар t-1, т. е. если столбцов 5, то 1 с 2, 1 с 3, 1 с 4, 1 c 5, Рассмотрим две строки этой таблицы. Сдвинем алфавит одной из строк на s символов и вычислим мИС полученных строк. Т.к. каждая из этих двух строк получена сдвигом алфавита открытого текста, то максимум мИС будет наблюдаться при нулевом конечном относительном сдвиге. Поэтому применяется следующий алгоритм: вычисляется мИС для различных s , ищется значение s , при котором взаимный индекс совпадений максимален. Тогда начальный относительный сдвиг строк будет равен m − s ( m — размер алфавита). Вычисляются относительные сдвиги между всеми парами строк. Т.к. сдвиги строк таблицы соответствуют сдвигам букв ключа, то остаётся перебрать m возможных ключей и выбрать из них наиболее правдоподобный. Отсюда и получаем набор ключей, один из которых является верным(или самым правдоподобным): Теперь нужно определить его, не задействуя человека. Здесь я использую 2 способа: 1. Словари. Осуществляем перебор по словарю, пока не найдем совпадение. Есть минус: если в словаре не окажется слова подобного нашему ключю, поэтому есть 2 вариант. 2. Найти максимум корреляционной суммы. Алгоритм: Загружаем Медного всадника Пушкина или Войну и Мир и вычисляем в них частоту каждой буквы, соответствующей алфавиту. Берем 1-й ключ из нашего набора и дешифруем открытый текст. Находим корреляционную сумму по формуле Теперь у нас для каждого ключа есть своя сумма. находим максимальную. Тот ключ, который за ней закреплен и является результатом.
0
|
|||
|
|
|||||
| 24.10.2018, 09:07 | |||||
|
Проблема в том что я картинки не вижу. Из всего вами перечисленного ничего не понял, но это и не важно для меня. Хорошо, давайте зайдем по другому, от частного к общему. Итак, давайте представим, что у вас уже есть готовая программа, каков ваш первый шаг в готовой программе? Добавлено через 9 секунд Проблема в том что я картинки не вижу. Из всего вами перечисленного ничего не понял, но это и не важно для меня. Хорошо, давайте зайдем по другому, от частного к общему. Итак, давайте представим, что у вас уже есть готовая программа, каков ваш первый шаг в готовой программе?
0
|
|||||
|
629 / 41 / 25
Регистрация: 25.04.2017
Сообщений: 512
|
|||||||
| 24.10.2018, 11:02 [ТС] | |||||||
|
Если да, то первый шаг - вставить закрытый текст в поле для расшифровки или же загрузить его из текстового файла в это поле, затем программа на основе этого закрытого текста должна выбрать нужный алфавит(пока не понятно как это сделать):английский с пробелом или без, или это русский с Ё или без и так у нас несколько вариантов алфавита один из которых нужно присвоить переменной alph. В моей программе у меня есть переменная
0
|
|||||||
|
|
|||
| 24.10.2018, 11:44 | |||
|
Соответсвенно нам нужно определить: 1. Какие задачи мы решаем? (это будет название пространства имен) 2. Что мы делаем с данными? (это будет нашим названием класса исполнителя) 3. Какой тип получаемых от пользователей данных, и что мы с ними будем делать? (это будет название файла) От вас хочу получить краткие, но содержательные ответы на заданные вопросы.
0
|
|||
|
629 / 41 / 25
Регистрация: 25.04.2017
Сообщений: 512
|
||||
| 24.10.2018, 12:01 [ТС] | ||||
|
почему бы не использовать название Vizhener или Vigenere? Затем если мы будем использовать словарь, что пока под вопросом, то организовать выбор словаря(англ или рус. большой или маленький) После того, как ключ вычислен, предоставить пользователю возможность сохранить отчет о дешифровке(о содержании отчета позже)
0
|
||||
|
|
|||||||
| 24.10.2018, 12:22 | |||||||
![]() Не будет ли правильнее сказать: дешифровать шифр Виженера? научитесь четко, последовательно и кратко отвечать на заданные вопросы. Добавлено через 13 минут Хотя и ваше название для пространства имен,
0
|
|||||||
|
629 / 41 / 25
Регистрация: 25.04.2017
Сообщений: 512
|
|
| 24.10.2018, 12:25 [ТС] | |
|
1. Нам нужно дешифровать шифр Виженера
2. Данные мы передаем в модель данных 3. Тип данных: текст, зашифрованный предположительно Виженером;
0
|
|
|
629 / 41 / 25
Регистрация: 25.04.2017
Сообщений: 512
|
||
| 24.10.2018, 13:01 [ТС] | ||
|
Добавлено через 16 минут В модели данных мы будем хранить данные и реализуем алгоритмы их преобразования; Модель данных вернет нам результат работы, который можно будет показать пользователю, используя например GUI. Результат сохранить в виде отчета(по желанию)
0
|
||
|
|
||
| 24.10.2018, 14:09 | ||
|
Так что пока слово модель забудьте, иначе получится антипатерн. по сути я от вас хотел добиться ответа на вопрос 2 такого: Мы должны запустить метод, который нам выдаст результат возможности дешифровки полученного текста от пользователя (пока не говорим как и почему). на 3-ий вопрос, ответ следующий: Мы получаем строку от пользователя, и проверяем возможно ли ее дешифровать, побочно выводя в свойство класса дешифрованный текст. Добавлено через 21 секунду Вам это понятно?
0
|
||
|
629 / 41 / 25
Регистрация: 25.04.2017
Сообщений: 512
|
|||
| 24.10.2018, 14:53 [ТС] | |||
|
Ну может я вас не так понял, в целом ясно.
0
|
|||
|
|
||
| 24.10.2018, 15:41 | ||
![]() По сути в методе, мы должны проверить, а можно ли дешифровать, Естественно для этого нужны критерии, которые будут говорить нам о том, удалось ли расшифровать или нет. Если удалось расшифровать, то соответсвенно, мы можем расшифрованный текст отдать. Добавлено через 15 секунд теперь понятнее стало?
0
|
||
|
629 / 41 / 25
Регистрация: 25.04.2017
Сообщений: 512
|
|
| 24.10.2018, 15:44 [ТС] | |
|
0
|
|
| 24.10.2018, 15:44 | |
|
Помогаю со студенческими работами здесь
20
Дешифратор Шифр Цезаря Шифратор и дешифратор. Плагинная система. Шифратор/дешифратор с случайным ключем
Шифр Цезаря: Как сделать сортировку в шифре, чтобы дешифратор выдал единственно верное решение Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во
всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
|