Создание своего метода шифрования, часть 2

В прошлой статье из цикла “Создание своего метода шифрования” мы узнали отличие шифров от кодов , выбрали 2 шифра и скрестили их. Чтобы зашифровать 1-2 предложения не нужно много времени и сил, но что делать если текст, над которым придётся работать состоит из пары 10-ов страниц? В таком случае процесс сокрытия информации надо сделать автоматизированным. Написание  не сложной программы по определенному методу шифрования – это как раз то что нам и нужно!

Для написания  любой , даже самой пустяковой программы, надо разбить нашу задачу на процедуры и составить алгоритм ( план действий )  по которому наша программа будет обрабатывать данные.

Процедуры

Для того чтобы программа могла начать работать с данными по нашему методу , она должна получить 2 ключа. Ключ №1 — длинной 5 символов , и Ключ №2 — длинной 6 символов. Значит первым  действием при запуске нашего  приложения должен быть ввод 2 ключей.

  1. Ввод ключевых слов в систему

Следующим этапом будет ввод текста , который мы будем зашифровывать или , наоборот дешифровывать.

  1. Ввод текста

Наша программа должна понимать что конкретно ей предстоит сделать. Поэтому кто-бы не пользовался программой , он должен быстро и интуитивно выбирать между шифровкой и дешифровкой.

  1. Определения дальнейшего направления работы программы
  2. Получения результата работы программы (используя минимальное кол-во манипуляций)

Итак , мы определили последовательность действий для достижения нужного результата. Что теперь?

Блок-схема алгоритма программы

Если вдруг вы человек далекий от программирования, не пугайтесь, каждая картинка из представленных ниже получит очень подробное описание!

Так как писать программу мы будем в Visual Studio на языке C# , то сейчас разберём только основные 3 процедуры. Почему только 3 ? Потому что это алгоритм шифрования , дешифрования и редактирования (подготовка текста для шифрования). Именно эти 3 алгоритма являются главными , так как писать вашу программу вы можете и на таких структурных язык как Free Pascal , но принцип работы будет один и тот же на любом языке.

Редактирование текста

Процедура очень короткая , и ее реализация на разных языках будет отличаться, поэтому просто скажу что мы должны избавить наш текст от некоторых символов.

  1. Знаки препинания , Ъ , Ь , пробелы – эти символы удаляем из текста начисто.
  2. Ё = Е и Й = И. Заменяем эти буквы по всему тексту.

Блок-схема алгоритма шифрования

Как будет происходить замена оригинальных символов в тексте на ключевые ? Сначала мы создадим цикл который будет иметь число повторений = длине нашего текста Далее цикл по длине ключа №2 и внутри него цикл по ключу №1.

Потом используя условие “ если символ текста равен символу из таблицы алфавита”  ,  прибавим к текстовой переменной символ ключа №1 и символ ключа №2 , которые стоят под тем же номером в слове , что и координата символа исходного текста.

Алгоритм шифрования

Блок-схема алгоритма дешифрования

А теперь самая сложная часть – дешифровка. Казалось бы, чего сложного? Повторение шифрования в обратном порядке! Вот только есть одно но. При расшифровке нам надо 2 символа заменить 1 и сделать это в одном цикле.

Что невозможно т.к. длина ключевых слов у нас разная. Как и в шифровании первой цикл – это цикл от первого до последнего символа. Далее введем две переменные числового типа x и y. X приравняем к 0 (т.к. нумерация идет с 0) а Y зададим значение 1.

Следующим действием проверим наши введенные переменные, чтобы они были меньше чем длинна нашего текста.

Для чего нам эти переменные? В них мы будем хранить номер символа зашифрованного текста, который бы будем сравнивать с символами ключевого слова. X – номер символа для сравнения с ключом столбцов (ключ №1), а Y номер символа для сравнения с ключом строк (ключ №2).

Алгоритм дешифровки-1

Ключевым изменением в алгоритме дешифровки по сравнению с шифрованием , является подобие параллельности циклов сравнения символов текста с ключами. Сравнивая символы из текста с ключом , при их совпадении,  мы будем записывать координату символа в ключе в локальную переменную и прерывать цикл.

Так же , при совпадении символов мы будем прибавлять к переменным 2-ку. Это нужно для того чтобы цикл с ключом строк проверял только 1-ю букву в паре , а цикл с ключом столбцов 2-ю.

При прибавлении 2  — ряд переменной y = 1, 3, 5, 7 ….. ; ряд переменной x = 0, 2, 4, 6 …..

Алгоритм дешифровки-2

После того как оба цикла были прерваны, по определившимся координатам найдем букву, которая была зашифрована и запишем ее в строку.

В следующей статье , используя составленные блок-схемы, будет написана программа автоматического шифрования и дешифрования. Первая статья этого цикла здесь.

Добавить комментарий