Формы и основные модули текста программы в среде Delphi
Р Е Ф Е Р А Т
Курсовая работа: 22 с., 12 иллюстраций, 7 источников.
ТЕКСТ, КРИПТОГРАФИЧЕСКАЯ СИСТЕМА, КЛЮЧ, ШИФРОВКА, ДЕШИФРОВКА.
Предмет исследования – возможности среды объектно-ориентированного программирования Delphi для осуществления шифровки текста.
Цель работы – написать программу, которая выполняет шифровку-дешифровку текста.
При выполнении работы
Практическая значимость этой работы
заключается в том, что пользователь
получит возможность
Автор подтверждает, что приведенный в работе расчетно-аналитический материал правильно и объективно отражает состояние исследуемого процесса, а все заимствованные из литературных и других источников теоретические, методологические и методические положения и концепции сопровождаются ссылками на их авторов.
________________________
(подпись студента)
СОДЕРЖАНИЕ
ВВЕДЕНИЕ 6
1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 8
1.1 Постановка задачи 8
1.2 Математическая модель 8
1.3 Алгоритм решения 9
1.4 Блок-схема 10
2. ПРАКТИЧЕСКАЯ ЧАСТЬ 12
2.1. Описание объектов, свойств и методов 12
2.2 Формы и основные модули текста программы в среде Delphi 13
2.3 Результат тестирования программного продукта 17
2.4 Анализ полученных результатов 20
ЗАКЛЮЧЕНИЕ 21
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 22
ПРИЛОЖЕНИЕ А 23
ВВЕДЕНИЕ
Проблема защиты информации путем ее преобразования, исключающего ее прочтение посторонним лицом, волновала человеческий ум с давних времен. С широким распространением письменности криптография стала формироваться как самостоятельная наука.
Криптография - это наука об обеспечении безопасности данных. Она занимается поисками решений четырех важных проблем безопасности - конфиденциальности, аутентификации, целостности и контроля участников взаимодействия. [6]
История криптографии - ровесница истории человеческого языка. Более того, первоначально письменность сама по себе была криптографической системой, так как в древних обществах ею владели только избранные. Священные книги Древнего Египта, Древней Индии тому примеры. [7]
Первые криптосистемы встречаются уже в начале нашей эры. Так, Цезарь в своей переписке использовал уже более менее систематический шифр, получивший его имя.
Бурное развитие криптографические системы получили в годы первой и второй мировых войн. Начиная с послевоенного времени и по нынешний день появление вычислительных средств ускорило разработку и совершенствование криптографических методов.
Актуальность
этой науки не угасает с момента
основания человеческого языка.
Особенно в нашей эры компьютеров
требуется обеспечение
Цель курсовой работы – осуществить шифровку текста с помощью средств Delphi.
Для достижения названной цели в исследовании необходимо решить следующие задачи:
- осуществить постановку задач;
- создать блок-схемы алгоритмов;
- осуществить описание объектов, свойств, методов;
- разработать формы и представить текст программы;
- привести результаты тестирования программного продукта.
Для выполнения этих задач будем использовать среду объектно-ориентированного программирования Delphi.
Основное достоинство Delphi состоит в том, что здесь реализованы идеи визуального программирования. Среда визуального программирования превращает процесс создания программы в приятное и легко понимаемое конструирование приложения из большого набора графических и структурных примитивов.
Курсовая работа состоит из теоретической и практической части. Теоретическая часть состоит из: постановки задачи; математической модели; алгоритма решения задачи и блок. Практическая часть состоит из: описания объектов, свойств и методов; формы и основных модулей текста программы в среде Delphi; результата тестирования программного продукта; графического представления результатов; анализа полученных результатов.
К работе прилагается электронный носитель информации.
1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
1.1 Постановка задачи
В данной курсовой работе требуется создать Windows-приложение на алгоритмическом языке Object Pascal в среде визуального программирования Delphi, которое предназначена для шифрования текста следующим образом:
для шифрования текста используется метод, основанный на сложении текста и пароля: "мой текст" + "пароль" = ('м'+'п')('о'+'а')... То есть каждый символ получают путем сложения соответствующих символов текста и пароля. Под "сложением символов" подразумевается сложение номеров этих символов. Обычно пароль длиннее текста, поэтому его размножают: "парольпар". Чтобы расшифровать текст, нужно проделать обратную операцию, то есть из текста вычесть пароль.
1.2 Математическая модель
В качестве информации, подлежащей шифрованию и дешифрованию, будут рассматриваться тексты, построенные на некотором алфавите. Под этими терминами понимается следующее.
Алфавит - конечное множество используемых для кодирования информации знаков.
Текст - упорядоченный набор из элементов алфавита.
В качестве примеров алфавитов, используемых в современных ИС можно привести следующие:
- алфавит Z33 - 32 буквы русского алфавита и пробел;
- алфавит Z256 - символы, входящие в стандартные коды ASCII и КОИ-8;
- бинарный алфавит - Z2 = {0,1};
- восьмеричный алфавит или шестнадцатеричный алфавит.
Шифрование - преобразовательный процесс: исходный текст, который носит также название открытого текста, заменяется шифрованным текстом.
Дешифрование - обратный шифрованию процесс. На основе ключа шифрованный текст преобразуется в исходный.
Ключ - информация, необходимая для беспрепятственного шифрования и дешифрования текстов.
На рисунке 1.1 показана блок-схема процедуры шифрования файлов.
Рисунок 1.1 — Процедура шифрования файлов
1.3 Алгоритм решения
Для шифровки текста используем цикл, в котором будут наращиваться два аргумента и происходить процесс вставки символов в исходный текст. Первый будет индексом символов исходного текста, а второй – индекс символа в ключе шифровки. То есть первой букве в тексте будет соответствовать первая буква в слове-ключе. Так как слово-пароль обычно меньше исходного текста, при достижении циклом конца слова он возвращается на его начало и продолжает процесс шифровки.
Для дешифровки текста проверим ключ путем извлечения строки, отвечающей за пароль, из текста и сравнения ее с размноженным до длины извлеченной строки предполагаемого пароля. При правильности условия программа вычтет эту строку из зашифрованного текста и тем самым расшифрует текст.
1.4 Блок-схема
На рисунке 1.2 представлена блок-схема процесса шифровки, где t – это текст, который будет результатом шифровки, str – исходный текст, w – слово-пароль, а i и k – это индексы для строк str и w соответственно.
Рисунок 1.2
— Блок-схема алгоритма
На рисунке 1.3 представлена блок-схема процесса дешифровки, в процессе которого сначала проверяется введенный ключ, а затем идет сам процесс дешифровки, где t – это текст, который будет результатом дешифровки, str – зашифрованный текст, w – предполагаемое слово-пароль, w0 – строка размноженного пароля, извлеченная из зашифрованного текста, w1 - строка размноженного предполагаемого пароля, а i и k используются как индексы.
Рисунок 1.3 — Блок-схема алгоритма дешифровки текста
2. ПРАКТИЧЕСКАЯ ЧАСТЬ
2.1. Описание объектов, свойств и методов
В ходе составления программы были использованы следующие объекты с их свойствами:
Label - текстовая метка (надпись) на форме. Используется для отображения любого текста в окне. Текст задаётся в свойстве Caption.
Edit - поле ввода. Используется для ввода любых данных (текста, числа и т.д.), представленных одной строкой. Текст хранится свойством Text. Свойство MaxLength позволяет задать максимальное число символов, которое может быть введено в поле. Значение 0 означает, что ограничение не установлено.
Memo - многострочный Edit. Используется для ввода больших объёмов текста. Свойство ReadOnly делает этот объект нередактируемым. Свойство ScrollBars позволяет указать полосы прокрутки, которые будут отображаться у поля при недостатке места для всего текста:
•ssNone - без полос прокрутки;
•ssHorizontal - горизонтальная полоса прокрутки;
•ssVertical - вертикальная;
•ssBoth - обе: и горизонтальная, и вертикальная.
Button – командная кнопка. Caption - текст на кнопке.
Компоненты OpenDialog — диалог «Открыть файл» и SaveDialog — диалог «Сохранить файл как...». Все свойства этих компонентов одинаковы, только их смысл несколько различен для открытия и закрытия файлов. Основное свойство, в котором возвращается в виде строки выбранный пользователем файл, — FileName. Типы искомых файлов, появляющиеся в диалоге в выпадающем списке "Тип файла", задаются свойством Filter.
2.2 Формы и основные модули текста программы в среде Delphi
При решении поставленной задачи будут использованы следующие объекты (рисунок 2.1)
Рисунок 2.1 – Объекты программы
Примечание – источник: собственная разработка
Button1..6 - командные кнопки;
Label1..3 – информационные метки;
Edit1 – поле ввода ключа шифра;
Memo1..2 – многострочные текстовые редакторы;
OpenDialog1 – диалог открытия файлов;
SaveDialog1 – диалог сохранения файлов.
Данные объекты размещены нами на форме пользовательского интерфейса, которая представлена на рисунке 2.2 и 2.3.
Рисунок 2.2 – Форма пользовательского интерфейса в режиме шифровки
Рисунок 2.3 – Форма пользовательского интерфейса в режиме дешифровки
Главной кнопке «Зашифровать»/«Дешифровать» назначим программный код:
procedure TForm1.Button1Click(Sender: TObject);
var w,w0,w1: string; i,k: integer;
begin
str:=Memo1.Text; memo2.Text:=''; w0:=''; w:=Edit1.Text;
if (w='') or (str='') then begin MessageDlg('Присутствуют пустые поля',mtInformation, [mbOK], 0);
exit; end;
if Button1.Caption='Зашифровать' then begin k:=1;
for i:=1 to Length(str) do begin
Memo2.Text:=Memo2.Text+str[i]+
k:=k+1;
if k>length(w) then k:=1;
end;
end
else begin
if op then for i:=1 to Length(str) do
if (str[i]=#$A) then Delete(str,i,1);
for i:=1 to Length(str) do
if not (odd(i)) then w0:=w0+str[i];
k:=1;
for i:=1 to length(w0) do begin
w1:=w1+w[k];
k:=k+1;
if k>length(w) then k:=1; end;
if w1=w0 then begin
for i:=1 to length(str) do begin
if (str[i]=#$D) and (op) then Memo2.Text:=Memo2.Text+#10;
if odd(i) then Memo2.Text:=Memo2.Text+str[i]; end; end
else MessageDlg('Неправильный ключ', mtWarning, [mbcancel],0); exit; end;
op:=false;
end;
Кнопка «<-->» отвечает за переключение между режимами программы. Ей назначим код:
procedure TForm1.Button2Click(Sender: TObject);
begin
if Label1.Caption='Исходный текст' then begin
Label1.Caption:='Зашифрованный текст';
Label2.Caption:='Исходный текcт';
Button1.Caption:='Дешифровать'
end
else
begin
Label1.Caption:='Исходный текст';
Label2.Caption:='Зашифрованный текст';
Button1.Caption:='Зашифровать'
end; end;
После создания приложения приступим к его тестированию.
2.3 Результат тестирования программного продукта
Для проверки правильности работы программы мы зашифруем какое-нибудь одно слово, чтобы с легкостью проверить правильность результата вручную.
Запишем в поле «Исходный текст» слово «Мобильник», а в поле «Слово-пароль» - «кот» и нажмем кнопку «Зашифровать» (рисунок 2.4)
Рисунок 2.4 – Шифрование слова при помощи программы.
Зашифровав слово ручным методом и с помощью программы, мы убедились в правильности ее работы.
Проверим работу программы, зашифровав большой текст, а затем проведя обратный процесс.
Шифровка представлена на рисунке 2.5.
Рисунок 2.5 – Диалоговое окно программы после процесса шифровки
Проверим способность программы сохранять текст в файл и открывать его из файла. Нажмем кнопку «Сохранить в файл», введем имя для файла с исходным текстом и файла с зашифрованным текстом. На рисунке 2.6 показан открытый файл с исходным текстом.
Рисунок 2.6 – Результат сохранения текста
Так как кодировка зашифрованного текста не определяется блокнотом, то этот файл можно открыть с помощью Microsoft Word. В результате мы увидим следующий текст, отображенный на рисунке 2.7.
Рисунок 2.7 – Результат сохранения зашифрованного текста
Выполним обратный процесс с зашифрованным текстом, поменяв режим работы, открыв зашифрованный текст из файла и введя ключ шифровки. Следует заметить, что программа проведет процесс дешифровки только при правильном ключе шифровки, иначе будет выведено сообщение «Неверный ключ» (рисунок 2.8).
Рисунок 2.8 – Диалоговое окно программы в процессе дешифровки при неправильно введенном ключе
Введя правильный ключ, при дешифровке мы получили такой же исходный текст, что показывает правильную работу программы (рисунок 2.9).
Рисунок 2.9 – Диалоговое окно программы после процесса дешифровки
2.4 Анализ полученных результатов
Анализируя результаты, полученные при выполнении программы, приходим к выводу, что программа способна шифровать и дешифровать текст и то, что она работает корректно.
ЗАКЛЮЧЕНИЕ
В процессе выполнения курсового проекта были усвоены некоторые возможности Delphi. Даже эта их небольшая часть показывает нам колоссальные возможности этой среды.
Целью курсовой работы было осуществление шифровки и дешифровки текста с помощью средств среды Delphi.
При выполнении курсовой работы:
- была изучена теория и технология работы с средой программирования Borland Delphi7;
- была изучена и проанализирована соответствующая литература;
- была составлена программа для шифровки и дешифровки текста.
Полученная нами программа способна шифровать, дешифровать текст, выполнять его открытие из файла и сохранение в файл.
Знания, полученные в результате работы над курсовым проектом, позволят в дальнейшем использовать Delphi для решения технических задач.
К данной курсовой работе предоставлено также приложение с полным кодом программы и электронный носитель с программой.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
- Архангельский, А.Я. 100 компонентов общего назначения библиотеки Delphi / А. Я. Архангельский. — Москва : Бином, 2002. – 272 с.
- Бобровский, С.И. Delphi 7. Учебный курс/ С. И. Бобровский – СПб.: Питер, 2004. – 736 с.
- Культин, Н.Б. Основы программирования в Delphi 7/ Н. Б. Культин – СПб.: БХВ.- СПб, 2003. – 608 с.
- Фаронов, В.В. Delphi. Программирование на языке высокого уровня: Учебник для вузов/ В. В. Фаронов – СПб.: Питер, 2006. – 640 с.
- Программирование в Delphi по классическим версиям : учебник / М. Г. Залотанов [и др.]; под общ. ред. М. Г. Залотанова. — 5-е изд. — СПб. : Питер, 2009. — 918 с.
- Шифр Цезаря [Электронный ресурс]. – Режим доступа: http://www.zahist.narod.ru/
vvcrypto.htm - Дата доступа: 09.04.2012 - Криптографические средства защиты информации [Электронный ресурс]. – Режим доступа: http://infosecmd.narod.ru/gl5.
html - Дата доступа: 09.04.2012
ПРИЛОЖЕНИЕ А
Листинг программы в Delphi
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus;
type
TForm1 = class(TForm)
Memo1: TMemo;
Memo2: TMemo;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
str: WideString; w,w0: string; op:boolean;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var w,w0,w1: string; i,k: integer;
begin
str:=Memo1.Text; memo2.Text:=''; w0:=''; w:=Edit1.Text;
if (w='') or (str='') then begin MessageDlg('Присутствуют пустые поля',mtInformation, [mbOK], 0);
exit; end;
if Button1.Caption='Зашифровать' then begin k:=1;
for i:=1 to Length(str) do begin
Memo2.Text:=Memo2.Text+str[i]+
k:=k+1;
if k>length(w) then k:=1;
end;
end
else begin
if op then for i:=1 to Length(str) do
if (str[i]=#$A) then Delete(str,i,1);
for i:=1 to Length(str) do
if not (odd(i)) then w0:=w0+str[i];
k:=1;
for i:=1 to length(w0) do begin
w1:=w1+w[k];
k:=k+1;
if k>length(w) then k:=1; end;
if w1=w0 then begin
for i:=1 to length(str) do begin
if (str[i]=#$D) and (op) then Memo2.Text:=Memo2.Text+#10;
if odd(i) then Memo2.Text:=Memo2.Text+str[i]; end; end
else MessageDlg('Неправильный ключ', mtWarning, [mbcancel],0); exit; end;
op:=false;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if Label1.Caption='Исходный текст' then begin
Label1.Caption:='Зашифрованный текст';
Label2.Caption:='Исходный тескт';
Button1.Caption:='Дешифровать'
end
else
begin
Label1.Caption:='Исходный текст';
Label2.Caption:='Зашифрованный текст';
Button1.Caption:='Зашифровать'
end; end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case key of
#13: Button1.Click; end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Memo1.Clear;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Memo2.Clear;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
op:=true;
OpenDialog1.Title:='Открыть файл';
with OpenDialog1, Memo1 do
if Execute then
begin
Lines.LoadFromFile(FileName);
OpenDialog1.FileName:=
end;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
SaveDialog1.Title:='Сохранить
SaveDialog1.FileName:='
with SaveDialog1, Memo1 do
if Execute then
begin
Lines.SaveToFile(FileName);
SaveDialog1.FileName:=
end;
SaveDialog1.Title:='Сохранить зашифрованный текст';
SaveDialog1.FileName:='
with SaveDialog1, Memo2 do
if Execute then
begin
Lines.SaveToFile(FileName);
SaveDialog1.FileName:=
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
MessageDlg('Программа Шифратор предназначена для шифровки-дешифровки текста.'+#13+'Для выполнения шифровки необходимо ввести текст в поле "Исходный текст", ввести ключ, который необходимо запомнить (иначе дешифровка текста не будет выполнена), и нажать "Зашифровать".'+#13+'Для обратной операции необходимо поменять направление перевода клавишей "<-->" и провести соответствующие операции'+#13+'Также программа выполняет открытие из файла и сохранение текста в файл.'+#13+'Программа разработана студентом 1-го курса в 2012 году',mtInformation,[mbOK],0 ) ;
end;
end.