Обработка текстовой информации в среде Delphi
Для шифровки текста используем цикл, в котором будут наращиваться два аргумента и происходить процесс вставки символов в исходный текст. Первый будет индексом символов исходного текста, а второй — индекс символа в ключе шифровки. То есть первой букве в тексте будет соответствовать первая буква в слове-ключе. Так как слово-пароль обычно меньше исходного текста, при достижении циклом конца слова… Читать ещё >
Обработка текстовой информации в среде Delphi (реферат, курсовая, диплом, контрольная)
- ВВЕДЕНИЕ
- 1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
- 1.1 Постановка задачи
- 1.2 Математическая модель
- 1.3 Алгоритм решения
- 1.4 Блок-схема
- 2. ПРАКТИЧЕСКАЯ ЧАСТЬ
- 2.1 Описание объектов, свойств и методов
- 2.2 Формы и основные модули текста программы в среде Delphi
- 2.3 Результат тестирования программного продукта
- 2.4 Анализ полученных результатов
- ЗАКЛЮЧЕНИЕ
- СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
- ПРИЛОЖЕНИЕ
Проблема защиты информации путем ее преобразования, исключающего ее прочтение посторонним лицом, волновала человеческий ум с давних времен. С широким распространением письменности криптография стала формироваться как самостоятельная наука.
Криптография — это наука об обеспечении безопасности данных. Она занимается поисками решений четырех важных проблем безопасности — конфиденциальности, аутентификации, целостности и контроля участников взаимодействия.
История криптографии — ровесница истории человеческого языка. Более того, первоначально письменность сама по себе была криптографической системой, так как в древних обществах ею владели только избранные. Священные книги Древнего Египта, Древней Индии тому примеры.
Первые криптосистемы встречаются уже в начале нашей эры. Так, Цезарь в своей переписке использовал уже более менее систематический шифр, получивший его имя.
Бурное развитие криптографические системы получили в годы первой и второй мировых войн. Начиная с послевоенного времени и по нынешний день появление вычислительных средств ускорило разработку и совершенствование криптографических методов.
Актуальность этой науки не угасает с момента основания человеческого языка. Особенно в нашей эры компьютеров требуется обеспечение конфиденциальности информации, невозможности прочтения ее посторонними лицами.
Цель курсовой работы — осуществить шифровку текста с помощью средств 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]+w[k];
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 — Диалоговое окно программы в процессе дешифровки при неправильно введенном ключе
Введя правильный ключ, при дешифровке мы получили такой же исходный текст, что показывает правильную работу программы (рисунок 2.7).
Рисунок 2.7 — Диалоговое окно программы после процесса дешифровки
2.4 Анализ полученных результатов
Анализируя результаты, полученные при выполнении программы, приходим к выводу, что программа способна шифровать и дешифровать текст и то, что она работает корректно.
ЗАКЛЮЧЕНИЕ
В процессе выполнения курсового проекта были усвоены некоторые возможности Delphi. Даже эта их небольшая часть показывает нам колоссальные возможности этой среды.
Целью курсовой работы было осуществление шифровки и дешифровки текста с помощью средств среды Delphi.
При выполнении курсовой работы:
· была изучена теория и технология работы с средой программирования Borland Delphi7;
· была изучена и проанализирована соответствующая литература;
· была составлена программа для шифровки и дешифровки текста.
Полученная нами программа способна шифровать, дешифровать текст, выполнять его открытие из файла и сохранение в файл.
Знания, полученные в результате работы над курсовым проектом, позволят в дальнейшем использовать Delphi для решения технических задач.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Архангельский, А.Я. 100 компонентов общего назначения библиотеки Delphi / А. Я. Архангельский. — Москва: Бином, 2002. — 272 с.
2. Бобровский, С.И. Delphi 7. Учебный курс/ С. И. Бобровский — СПб.: Питер, 2004. — 736 с.
3. Культин, Н. Б. Основы программирования в Delphi 7/ Н. Б. Культин — СПб.: БХВ.- СПб, 2003. — 608 с.
4. Фаронов, В.В. Delphi. Программирование на языке высокого уровня: Учебник для вузов/ В. В. Фаронов — СПб.: Питер, 2006. — 640 с.
ПРИЛОЖЕНИЕ
Листинг программы
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]+w[k];
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:=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:=Filename;
end;
SaveDialog1.Title:='Сохранить зашифрованный текст';
SaveDialog1.FileName:='Зашифрованный текст';
with SaveDialog1, Memo2 do
if Execute then
begin
Lines.SaveToFile (FileName);
SaveDialog1.FileName:=Filename;; end;
end;
procedure TForm1. Button7Click (Sender: TObject);
begin
MessageDlg ('Программа Шифратор предназначена для шифровки-дешифровки текста.'+#13+'Для выполнения шифровки необходимо ввести текст в поле «Исходный текст», ввести ключ, который необходимо запомнить (иначе дешифровка текста не будет выполнена), и нажать «Зашифровать» .'+#13+'Для обратной операции необходимо поменять направление перевода клавишей «<—>» и провести соответствующие операции'+#13+'Также программа выполняет открытие из файла и сохранение текста в файл.'+#13+'Программа разработана студентом 1-го курса БарГУ Гуриновичем Алексеем в 2012 году', mtInformation,[mbOK], 0) ;
end;