|
629 / 41 / 25
Регистрация: 25.04.2017
Сообщений: 513
|
|
Написать дешифратор22.10.2018, 17:22. Показов 9517. Ответов 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
Сообщений: 513
|
|||||||
| 25.10.2018, 18:23 [ТС] | |||||||
|
Добавлено через 3 минуты Как то так:
Может тогда DecoderVigener? Мы же все таки дешифруем
0
|
|||||||
|
629 / 41 / 25
Регистрация: 25.04.2017
Сообщений: 513
|
|||||||
| 26.10.2018, 12:05 [ТС] | |||||||
0
|
|||||||
|
629 / 41 / 25
Регистрация: 25.04.2017
Сообщений: 513
|
|||||||
| 26.10.2018, 13:05 [ТС] | |||||||
0
|
|||||||
|
|
|||||
| 26.10.2018, 13:30 | |||||
|
Добавлено через 1 минуту
0
|
|||||
|
629 / 41 / 25
Регистрация: 25.04.2017
Сообщений: 513
|
|||||||
| 26.10.2018, 13:40 [ТС] | |||||||
|
Добавлено через 2 минуты Ну да ладно, как насчет автосвойства?
0
|
|||||||
|
|
||||||||||
| 26.10.2018, 13:46 | ||||||||||
|
Добавлено через 3 минуты
0
|
||||||||||
|
629 / 41 / 25
Регистрация: 25.04.2017
Сообщений: 513
|
|
| 26.10.2018, 13:49 [ТС] | |
|
0
|
|
|
|
||
| 26.10.2018, 13:52 | ||
|
0
|
||
|
629 / 41 / 25
Регистрация: 25.04.2017
Сообщений: 513
|
|
| 26.10.2018, 13:54 [ТС] | |
|
0
|
|
|
|
|||||||
| 26.10.2018, 14:10 | |||||||
Теперь понятно?
0
|
|||||||
|
629 / 41 / 25
Регистрация: 25.04.2017
Сообщений: 513
|
|
| 26.10.2018, 14:20 [ТС] | |
|
0
|
|
|
|
||
| 26.10.2018, 15:08 | ||
|
Добавлено через 4 минуты по скольку вас Кассики не устраивает предлагаю Фридмана, либо предложите ваши варианты.
0
|
||
|
629 / 41 / 25
Регистрация: 25.04.2017
Сообщений: 513
|
|||||||||||||
| 26.10.2018, 15:24 [ТС] | |||||||||||||
|
Индекс совпадений мне нужен только для отчета, а вот взаимный ИС понадобиться в дальнейшем Добавлено через 1 минуту Тут напрашивается вопрос, либо программа вычисляет алфавит и задает его в переменную, либо мы даем возможность задать алфавит пользователю самому? Фильтровал я текст так:
Поиск длины ключа Автокорреляционный метод
0
|
|||||||||||||
|
|
||||||
| 26.10.2018, 15:33 | ||||||
|
Добавлено через 49 секунд worldandlife, вы всегда код пишите без комментариев и документации?
0
|
||||||
|
629 / 41 / 25
Регистрация: 25.04.2017
Сообщений: 513
|
|||||||||||
| 26.10.2018, 17:29 [ТС] | |||||||||||
|
С документацией не знаком еще а вот Взаимный Индекс совпадений уже нужен для дальнейших вычислений(он тоже должен быть в отчете, для каждой пары с каждым сдвигом выйдет много) чтобы остались только символы шифротекста alph - это наш алфавит, который мы должны либо вычислить, либо задать самостоятельно;
Или вам нужно описать алгоритм полностью? Добавлено через 58 минут Ну тогда я в ступоре, каков же следующий шаг на ваш взгляд? Добавлено через 19 минут Добавлено через 27 минут По поводу Касиски, я не против, я еще не использовал его, но знаю что он громоздкий и менее точный, чем Фридмана и Автокорреляционный. Можем попробовать написать его, тогда в программе будут фигурировать все три метода, так отчет будет более содержательным
0
|
|||||||||||
|
629 / 41 / 25
Регистрация: 25.04.2017
Сообщений: 513
|
|
| 27.10.2018, 16:44 [ТС] | |
|
Вот примерно такого я хочу добиться в идеале видео
0
|
|
|
|
|||||
| 29.10.2018, 10:10 | |||||
|
0
|
|||||
|
629 / 41 / 25
Регистрация: 25.04.2017
Сообщений: 513
|
||
| 29.10.2018, 11:22 [ТС] | ||
|
Метод Касиски состоит в том, что в шифротексте осуществляется поиск одинаковых сегментов длин не меньше 3 и вычисляются расстояния между началами последовательных сегментов. Далее находится наибольший общий делитель (НОД) этих расстояний. Предполагаемый период является кратным этого делителя. Автокорреляционный метод состоит в том, что исходный шифротекст выписывается в строку, а под ней выписываются строки полученные сдвигом вправо на t=1, 2, 3,... позиций. Для каждого t подсчитывается число Если по формуле у нас выходит значение >=0,05, то предполагаемый период = длине ключа Метод индекса совпадений Индекс совпадений вычисляется по формуле для каждого столбца(я вам ранее писал что весь текст нужно разбить на столбцы, т. е если длина ключа предположительно = 5, то будет 5 столбцов, где 1 столбец это каждая 5 буква начиная с первой, второй столбец - каждая 5 буква начиная со второй и так до пяти.) Для определения периода с помощью найденных ИС идет дикая формула, поэтому писать не буду. Достаточно предположения что найденный ИС > 0,0533, но опять же, я собираюсь вычислить ИС для уже найденного периода, чтобы он пошел в отчет. Поэтому мы можем сначала написать Касиски, и использовать его для отчета; Затем Автокорреляционный, чтобы найти длину ключа, которая уже будет фигурировать в расчетах ИС для отчета; Что скажете?
0
|
||
| 29.10.2018, 11:22 | |
|
Помогаю со студенческими работами здесь
60
Дешифратор Шифр Цезаря Шифратор и дешифратор. Плагинная система. Шифратор/дешифратор с случайным ключем
Шифр Цезаря: Как сделать сортировку в шифре, чтобы дешифратор выдал единственно верное решение Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[golang] Двоичная куча, min-heap
alhaos 20.05.2026
Двоичная куча
Двоичная куча — структура данных, которая всегда держит самый важный элемент наготове.
Представьте очередь к хилеру в игре, и очередь из игроков в приоритете те у кого меньше. . .
|
[golang] Breadth-First Search
alhaos 19.05.2026
BFS (Breadth-First Search) — это базовый алгоритм обхода графа в ширину, который поуровнево исследует все связанные вершины. Он начинает с выбранной точки и проверяет всех соседей, прежде чем. . .
|
[golang] Алгоритм «Хак Госпера»
alhaos 17.05.2026
Алгоритм «Хак Госпера»
Хак Госпера (Gosper's Hack) — алгоритм нахождения следующего по величине числа с тем же количеством установленных бит.
Придуман Биллом Госпером в 1970-х, опубликован в. . .
|
Рисование бинарного древа до 6-го колена на js, svg.
russiannick 17.05.2026
<svg width="335" height="240" viewBox="0 0 335 240" fill="#e5e1bb">
<style>
<!]>
</ style>
<g id="bush">
</ g>
</ svg>
function fn(){
let rost;/ / высота древа
let xx=165,yy=210,w=256;
|
|
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов,
содержащихся в реализации модуля. По-умолчанию все члены модуля доступны:
module Foo
let x = 10
let boo () = printfn "boo"
. . .
|
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible". . .
|
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов.
import "math"
func angleClock(hour int, minutes int) float64 {
. . .
|
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo
https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html
и его же старой инструкции по установке Lazarus с gtk2. . .
|