Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дипломный проект.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.95 Mб
Скачать

9.2. Экономический эффект

Экономический эффект может быть определён, как экономия на элементах производственных затрат, изменяющихся в связи с использованием программы. Это, в первую очередь, экономия на лицензии программы - БЕСПЛАТНО. Простой и удобный менеджер, имеет простой интерфейс. Ожидаемый экономический эффект, программа будет использована большим количеством пользователей.

9.3. Вывод

Результаты проведенного экономического исследования представлены в сводной таблице технико-экономических показателей.

Таблица 9.4. Сводная таблица технико-экономических показателей

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

Заключение

В ходе дипломного проектирования были систематизированы и закреплены знания, полученные за все время обучения по специальности «Программное обеспечение вычислительной техники и автоматизированных систем» в колледже телекоммуникаций.

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

• Добавление название пароля,ключа;

• Сохранение данных вводимых пользователей в зашифрованном виде;

• Открытие файла, дешифрование содержимого хранящегося в текстовом файле;

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

Список использованной литературы

  1. Алгоритмы и методы [Электронный ресурс] : – Электрон. дан. – Илья Кантор, 2000-2012. – Режим доступа : http://algolist.manual.ru/, свободный. – Алгоритмы Методы Исходники.

  2. Конахович Г.Ф., Климчук В.П., Паук С.М., Потапов В.Г. Защита информации в телекоммуникационных системах. – К.: «МК-пресс», 2005. - 248 с.

  3. Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на С++: пер. с англ. М.: Бином, СПб.: Невский диалект, 1998.

  4. Гамма Э. Приемы объектно-ориентированного проектирования. Паттерны проектирования. / Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. – СПб: Питер, 2001. — 368 с.: ил. (Серия «Библиотека программиста»)

  5. Исагулиев К.П. Справочник по криптологии. – Мн.: Новое знание, 2004.

  6. Скляров В.А. Язык С++ и объектно-ориентированное программирование. М.: Высш.шк., 1997. — 478 с.

ПРИЛОЖЕНИЕ 1

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

Авторизация пользователя

ПРИЛОЖЕНИЕ 2

Текст программы

//---------------------------------------------------------------------------

// Оськина Валентина группа 592

// Дипломная работа по специальности "Программное обеспечение вычислительной техники и автоматизированных систем "

// Программа для шифрации и дешифрации данных "Шифратор данных"

//---------------------------------------------------------------------------

#include <vcl.h>

#include <math.h>

#pragma hdrstop

#include "Unit1.h"

#include "Unit2.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

String TForm1::encode(long lSize, long * lKey) //функция шифрации

{

long i, j;

String line, encstr;

char * text;

String temp;

text = (temp=Memo1->Text).c_str(); //считываем текст из поля ввода

for(i = 0; i < Memo1->Text.Length(); i += lSize) //обход шифруемых блоков

{

line = "";

for(j = 0; j < lSize; j++) //считваем очередной блок символов

line += text[i + j];

for(j = 0; j < lSize; j++) // осуществляем перестановку в очередном блоке символов

encstr += line[lKey[j]];

}

return encstr; //возвращаем зашифрованный текст

}

String TForm1::decode(long lSize, long * lKey) //функция дешифрации

{

long i, j;

String line, decstr;

char * text;

String temp;

text = (temp=Memo2->Text).c_str(); //считываем текст из поля ввода

decstr = Memo2->Text;

for(i = 0; i < Memo2->Text.Length(); i += lSize) //обход блоков шифра

{

for(j = 0; j < lSize; j++) //осуществляем обратную перестановку в очередном блоке символов

decstr[i + lKey[j]] = text[i + j];

}

return decstr; //возвращаем расшифрованный текст

}

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton1Click(TObject *Sender) //сохранение исходного текста в файл

{

if(SaveDialog1->Execute())

Memo1->Lines->SaveToFile(SaveDialog1->FileName);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton3Click(TObject *Sender) //сохранение зашифрованного текста в файл

{

if(SaveDialog2->Execute())

Memo2->Lines->SaveToFile(SaveDialog2->FileName);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton2Click(TObject *Sender) //открытие файла с исходным текстом

{

if(OpenDialog1->Execute())

Memo1->Lines->LoadFromFile(OpenDialog1->FileName);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton4Click(TObject *Sender) //открытие файла с шифром текстом

{

if(OpenDialog2->Execute())

Memo2->Lines->LoadFromFile(OpenDialog2->FileName);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

{

Application->CreateForm(__classid(TPasswordDlg), &PasswordDlg); //создаем форму ввода пароля

if(PasswordDlg->ShowModal()!=mrOk||!PasswordDlg->valid) //если пароль не введен либо введен неверно

Application->Terminate(); //выходим из приложения

PasswordDlg->Free(); //удаляем из памяти объект формы ввода пароля

SaveDialog1->InitialDir=GetCurrentDir(); //устанавливаем папку по умолчанию

OpenDialog1->InitialDir=GetCurrentDir(); //для диалогов

SaveDialog2->InitialDir=GetCurrentDir(); //открытия и сохранения

OpenDialog2->InitialDir=GetCurrentDir(); //файлов

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender) //кнопка "зашифровать"

{

if(Memo1->Text!="") //если сообщение введено

{

if(MaskEdit1->Text!=" ") //если ключ введен

{

long lKey[5];

long key=StrToInt(MaskEdit1->Text); //считываем ключ в виде пятизначного целого

long i, lSize= sizeof(lKey)/sizeof(lKey[0]); //длина ключа

long S=pow(10,lSize-1);

for(i=0;i<5;i++) //сохраняем ключ в виде 5 целых чисел от 1 до 5

{

lKey[i]=key/S;

key%=S;

S/=10;

}

Memo2->Text = encode(lSize, lKey); //выводим результат шифрации

}

else MessageDlg("Внимание!\nВведите ключ!", mtError, TMsgDlgButtons() << mbOK, 0);

}

else MessageDlg("Внимание!\nВведите сообщение!", mtError, TMsgDlgButtons() << mbOK, 0);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender) //кнопка "расшифровать"

{

if(Memo2->Text!="")

{

if(MaskEdit1->Text!=" ")

{

long lKey[5];

long key=StrToInt(MaskEdit1->Text);

long i, lSize= sizeof(lKey)/sizeof(lKey[0]);

long S=pow(10,lSize-1);

for(i=0;i<5;i++)

{

lKey[i]=key/S;

key%=S;

S/=10;

}

Memo1->Text = decode(lSize, lKey);

}

else MessageDlg("Внимание!\nВведите ключ!", mtError, TMsgDlgButtons() << mbOK, 0);

}

else MessageDlg("Внимание!\nВведите сообщение!", mtError, TMsgDlgButtons() << mbOK, 0);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::MaskEdit1KeyPress(TObject *Sender, char &Key)

{

if(!((Key>=49&&Key<=53)||(Key>=97&&Key<=101)||Key==8||Key==46)) //в поле ввода ключа можно ввести только числа от 1 до 5

Key=0;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton5Click(TObject *Sender) //очистка поля ввода

{

Memo1->Clear();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton6Click(TObject *Sender) //очистка поля ввода

{

Memo2->Clear();

}

ПРИЛОЖЕНИЕ 3

Результаты тестирования

Результаты тестирования

Тестирование методом «черного ящика»

Таблица 3.Тестирование программы на мониторах разного разрешения