Разработка программы шифрования текста

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



?ки особой секретности. Одним из путей применения данной программы может явиться дешифрование вышеуказанных материалов.

1.2Цель работы

Целью данной работы являются:

.Углубление знаний и расширение навыков по разработке алгоритмов и их реализации на персональном компьютере.

.Создание программы, способной зашифровывать и расшифровывать вводимый текст пятью способами:

Методом Атбаш

Шифром Цезаря

Квадратом Полибия

Методом Гронсфельда

Методом Виженера

1.3Задачи работы

Задачами данной работы являются:

.Изложение материала по теме шифрование и дешифрование текста пятью разными методами

.Описание алгоритма программы

.Описание программы

.Составление блок-схемы, характеризующей работу программы

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

2.ОСНОВНОЕ СОДЕРЖАНИЕ

.1 Описание работы программы.

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

function Atbash (тАж)CaesarEncipher (тАж)CaesarDecipher (тАж)PolibiusEncipher (тАж)PolibiusDecipher (тАж)GronsfeldEncipher (тАж)GronsfeldDecipher (тАж)ViginerEncipher (тАж)ViginerDecipher (тАж)

Функция ( Function(тАж) ) - это часть программы, которая вычисляет и возвращает значение.

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

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

Условный оператор (if) реализует выполнение определённых команд при условии, что некоторое логическое выражение (условие) принимает значение истина true.

Часть программы, включающую оператор if , с помощью которого программа обращается к нужной функции, передаёт ей значение и возвращает после вычисления, представлена ниже в пункте №7.

2.1.1 Этапы работы программы

.При запуске программы процедура writeln выводит на экран сообщение 'Введите номер интересующего метода шифрования:1-Атбаш,2-Цезарь,3-Полибий,4-Гронсфельд,5-Виженер';

.Процедура read считывает переменную m:real (тип данных- вещественные числа);

.Процедура writeln выводит на экран сообщение 'Введите слово';

.Процедура readln считывает переменную word:string (буквенного типа);

.Процедура writeln выводит на экран сообщение '1-зашифровать/2-расшифровать ';

.Процедура readln считывает переменную k:real (тип данных-вещественные числа);

.Все переменные считаны - реализуется условный оператор:

если m=1, то проверяется k:

если к=1, то переменной s возвращается значение, полученное функцией от переменной word s := Atbash(word), и оператор writeln выводит ('Шифрование элемента ',s);

если к<>1,то переменной s возвращается значение, полученное функцией от переменной word s := Atbash(word), и оператор writeln выводит ('Расшифровывание элемента ', s);

Далее по аналогии:

m=2, k=1 - s := CaesarEncipher(word);

writeln('Шифрование элемента ',s)

k<>1 - s := CaesarDecipher(word);('Расшифровывание элемента ',s);=3, k=1 - s := PolibiusEncipher(word);('Шифрование элемента ',s)

k<>1 - s := PolibiusDecipher(word);('Расшифровывание элемента ',s);=4, k=1 - s := GronsfeldEncipher(word, '2178');('Шифрование элемента ',s)

k<>1 - s := GronsfeldDecipher(word, '2178');('Расшифровывание элемента ',s);

m=5, k=1 - s := ViginerEncipher(word, 'BORED');('Шифрование элемента ',s);

k<>1 - s := ViginerDecipher(word, 'BORED');('Расшифровывание элемента ',s);

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

.1.2 Подробнее о программе. Использованные функции и процедуры

Функция chr (X) - возвращает символ с определенным номером в ASCII таблице. Function Chr(X : Byte) : Char.

Функция ord (X) - возвращает порядковый номер значения выражения порядкового типа (нумерация начинается с нуля)

function Ord(x: ): Longint; - выражение любого порядкового типа.

Процедура Inc - увеличивает значение переменной

Procedure Inc(Var X [ ; N : Longint ] ).

Параметр X - переменная перечислимого типа или переменная типа PChar, если допускается расширенный синтаксис, а N - выражение целочисленного типа. Значение X увеличивается на 1, если параметр N не определен, или на N, если праметр N определен, то есть Inc(X) соответствует X:=X+1, а Inc(X, N) соответствует X:=X+N.

Процедура Dec- уменьшает значение переменной

Procedure Dec(Var X[ ; N : Longint]).

По аналогии с процедурой Inc.

Функция Succ возвращает следующий элемент параметра.

Function Succ(X) : (тип параметра).

Параметр X в функции Succ является выражением перечислимого типа. Значение результата вызова функции Succ будет того же типа, что и X, так как является последователем X.('A') = 'B'(функция)- возвращает предшественника параметра.

Function Pred(X) : ;

По аналогии с функцией Succ.

Function Pos(Substr : String; S : String) : Byte; -ищет подстроку в строке.

Параметры Substr и S - строковые выражения. Pos ищет первое вхождение строки Substr в строку S и возвращает целочисленное значение, которое является индексом первого символа Substr внутри S. Если строка Substr не найдена, то Pos возвращает нуль. [7]

.1.3 Работа основных функций в программе

.Все функции получают буквенное значение переменной word, далее:Atbash

Служит для шифрования и дешифрования методом Атбаш.

Запускается цикл, в котором каждой букве присваивается новое значение из таблицы ASCII. Функция ord возвращает символу под номером i его номер из таблица ASHII, далее этот номер вычитается из 219, если символ принадлежит определённому промежутку (219=97+122, т.е. равен сумме номеров символа a и z; 155=65+90, сумма номеров символов Z и a). В следующем действии функция chr возв