Скачиваний:
6
Добавлен:
17.06.2023
Размер:
394.56 Кб
Скачать

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

Тестирование программного продукта было осуществлено с применением метода «черного ящика», в соответствии с которым, манипуляции производятся только с входными и выходными значениями. На рисунке 2.2 представлен результат работы программы в режиме шифрования. На рисунке 2.3 изображена работа программного продукта при расшифровке зашифрованного текста.

Рисунок 2.2 – Результаты шифрования

Рисунок 2.3 – Результаты дешифровки

Заключение

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

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

Разработано назначение и возможности системы, предназначенной для автоматизации деятельности регистратуры. Также для этой системы разработаны рекомендации по комплексной защите, включающие в себя следующие направления:

1) Правовая защита;

2) Аппаратно-программная защита;

3) Организационно-административная защита;

4) Физическая защита.

В практической части расчетно-графической работы изучен ассиметричный метод шифрования RSA. Также была разработана программа в среде Delphi, выполняющая следующие функции:

1) Шифрование открытого текста на основе открытого ключа {769;143}, рассчитанного по индивидуальному заданию;

2) Запись и вывод зашифрованного текста в соответствующий программный блок;

3) Дешифровка зашифрованного текста на основе закрытого ключа {9;143}, рассчитанного по индивидуальному заданию.

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

Список использованных источников

1. Федеральный государственный образовательный стандарт высшего профессионального образования по направлению подготовки 090303 Прикладная информатика (уровень высшего образования бакалавриат). Утвержден Приказом Министерства образования и науки России от 12.03.2015 N 207.

2. Кузнецов И.Н. Рефераты, курсовые работы и дипломное проектирование. Методика подготовки и оформления. М.: Изд-во Дашков и Ко, 2012. 340 с.

3. ГОСТ 7.32-2001 Система стандартов по информации, библиотечному и издательскому делу. Отчет о научно-исследовательской работе. Структура и правила оформления. Минск: Межгосударственный совет по стандартизации, метрологии и сертификации, 2001. 19 с.

4. ГОСТ Р 7.0.5-2008 Система стандартов по информации, библиотечному и издательскому делу. Библиографическая ссылка. Общие требования и правила составления. М:, 2008. 19 с.

5. Вендров А.М. Проектирование программного обеспечения экономических информационных систем: Учебник для студентов вузов / А.М. Вендров. М. : Финансы и статистика. 2012. 352 с.

6. Багриновский К.А. Новые информационные технологии / К.А. Багриновский, Е.Ю. Хрусталев. М. : ЭКО. 2010. 408 с.

7. Архангельский А.Я. Delphi 2006. Справочное пособие. / А.Я Архангельский. М. : БИНОМ. 2011. 326 с.

Приложение а

Листинг программы

unit rsa;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Label1: TLabel;

Button2: TButton;

Edit1: TEdit;

Label2: TLabel;

Edit2: TEdit;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

Button3: TButton;

Label6: TLabel;

Edit6: TEdit;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

z=^Stack;

Stack=record

data:integer;

next:z;

end;

CONST

//n=33; {общая часть открытого и секретного ключа}

//e=769; {уникальная часть открытого ключа}

//d=9; {уникальная часть секретного ключа}

ks=65; {количество разрешенных символов открытого текста}

{Таблица соответствия символов с числами}

ts: array [0..ks-1] of char=('а','б','в','г','д','е','ж','з','и','й','к','л','м','н','о',

'п','р','с','т','у','ф','х','ц','ч','ш','щ','ъ','ы','ь','э','ю','я',' ',

'А','Б','В','Г','Д','Е','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С',

'Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я');

var

Form1: TForm1;

n:integer; {общая часть открытого и секретного ключа}

e:integer; {уникальная часть открытого ключа}

d:integer; {уникальная часть секретного ключа}

ot,zt:string;

{ot-открытый текст ,zt-закрытый (шифрованный текст) текст}

sot: string[1];

{sot - текущий символ открытого текста}

szt: string[1];

{szt - текущий символ закрытого текста}

ko, kz,kz1,ko1:longint;

l:integer;

{ko - число, соответствующее символу открытого текста по таблице соответствия}

{kz - число, соответствующее зашифрованному символу открытого текста}

{ko, kz - вспомогательные переменные}

{l - длина открытого текста}

flag:boolean;

{flag=true символ входит в таблицу соответствия чисел и символов,}

{если символ не входит в таблицу, то он не включается в шифрованное сообщение}

pbeg,pend,phelp:z;

implementation

{$R *.dfm}

//STACK

//Add to stack

procedure Add(x:integer);

var phelp2,phelp3:z;

begin

new(phelp);

new(phelp3);

new(phelp2);

phelp3:=pbeg;

phelp:=pbeg.next;

while phelp.next<>nil do

begin

phelp:=phelp.next;

phelp3:=phelp3.next

end;

//New(phelp2);

phelp2.next:=phelp3.next;

phelp3.next:=phelp2;

phelp3.data:=x;

end;

//Create stack

procedure CreateStack(var pbeg,pend:z);

begin

New(pbeg);

New(pend);

pbeg.data:=999;

pbeg.next:=pend;

pbeg.next.data:=999;

pbeg.next.next:=nil;

end;

//Delete element

//procedure Delete()

function LengthSt:integer;

var i:integer;

begin

i:=0;

phelp:=pbeg;

while phelp.next.next<>nil do

begin

phelp:=phelp.next;

i:=i+1;

end;

result:=i;

end;

//Vivod

procedure ShowSt(ed:Tedit);

begin

ed.Clear;

phelp:=pbeg;

while phelp.next.next<>nil do

begin

ed.Text:=ed.Text+ inttostr(phelp.data);

phelp:=phelp.next;

end;

end;

//********************** ШИФРУЕМ ТЕКСТ ***************************************

procedure TForm1.Button1Click(Sender: TObject);

var i,j:integer;

{i,j - переменные для организации циклов}

begin

n:=StrToInt(Edit3.Text);//считываем открытый ключ

e:=StrToInt(Edit4.Text);

ot:=Edit1.Text;{считываем открытый текст}

CreateStack(pbeg,pend);

//zt:=''; {очищаем строку зашифрованного текста}

l:=length(ot); {определяем длину открытого текста}

For i:=1 to l do {цикл шифровки}

begin

sot:=copy(ot,i,1); {извлекаем очередной символ из открытого текста}

flag:=false;

{определяем число, соответствующее очередному символу}

for j:=0 to ks-1 do

if ts[j]=sot then

begin

ko:=j;

flag:=true

end;

if flag then {если символ открытого текста входит в таблицу соответсвия, то шифруем его}

begin

{находим число из шифра}

if ko=0 then kz:=0 else

{возведение в степень е заменяем операцией перемножения е раз}

{при этом, чтобы числа не получались большими пользуемся свойствами арифметики}

{в классах вычетов, а именно что (a*b) mod n = [(a mod n) * (b mod n) ] mod n}

begin

kz1:=1;

for j:=1 to e do

kz1:=(kz1 mod n)*(ko mod n);

kz:= kz1 mod n;

end;

{переводим зашифрованное число в символ по таблице ASCII кодов+32}

{+32 чтобы исключить управляющие коды, 32 - это пробел)}

{так можно делать только когда n<256-32}

Add(kz);

szt:=chr(kz+32);

zt:=zt+szt; {наращиваем закрытый текст}

end;

end;

Edit2.Text:=zt {выводим сформированный закрытый текст}

end;

//****************РАСШИФРОВЫВАЕМ ТЕКСТ********************************

procedure TForm1.Button2Click(Sender: TObject);

var i,j:integer;

{i,j - переменные для организации циклов}

begin

n:=StrToInt(Edit3.Text);//считываем открытый ключ

e:=StrToInt(Edit4.Text);

d:=strtoint(edit5.Text);

ot:='';

l:=lengthSt; {определяем длину закрытого текста}

phelp:=pbeg;

For i:=1 to l do {цикл расшифровки}

begin

kz:=phelp.data;

//szt:=copy(zt,i,1); {извлекаем очередной символ из закрытого текста}

{определеяем число, соответствующее очередному символу по таблице ASCII кодов}

//for j:=0 to 255 do if chr(j)=szt then kz:=j-32;

{находим число, соответствующее номеру символа открытого текста}

if kz=0 then ko:=0 else

begin

ko:=1;

for j:=1 to d do ko:=(ko mod n)*(kz mod n);

ko:=ko mod n

end;

sot:=ts[ko]; {определяем символ открытого текста}

ot:=ot+sot; {наращиваем открытый текст}

phelp:=phelp.next;

end;

ShowSt(form1.Edit6);

Edit6.Text:=ot;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

edit1.Clear;

edit2.Clear;

edit6.Clear;

end;

end.

Рисунок А.1 – Листинг программы