Защита информации от несанкционированного доступа

Автор работы: Пользователь скрыл имя, 08 Ноября 2011 в 19:02, курсовая работа

Описание

В настоящее время большое внимание уделяется информации, недаром наш век называют «информационным». Во время того, как люди познают технологии хранения и передачи информации, встает вопрос о ее защите от несанкционированного доступа. Для решения этой проблемы было разработано большое количество разнообразных методов кодирования информации, которые могут быть реализованы программно. Данная разработка представляет собой программный модуль, обеспечивающий шифрование и расшифровывание информационных блоков.

Содержание

АННОТАЦИЯ
ВВЕДЕНИЕ
Постановка задачи
Основные понятия
Выбор методов шифрования
Программная реализация
Общее описание
Дополнительные модули
Руководство пользователя
ЗАКЛЮЧЕНИЕ
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
ПРИЛОЖЕНИЕ А

Работа состоит из  1 файл

Защита информации от несанкционированного доступа.doc

— 766.50 Кб (Скачать документ)

     MainKey.ReadOnly:=false;

     MainKey.Text:='';

     if ParamCount>1 then

     begin

     for i:=2 to ParamCount do

     begin

     Files.Items.Add(ParamStr(i));

     end;

     end;

     end else

     begin

     //кодирование

     if ParamCount>0 then

     for i:=1 to ParamCount do

     begin

     Files.Items.Add(ParamStr(i));

     end;

     Decode:=False;

     end;

     end; 

     procedure TMainForm.AddCmdLine(var msg: TMessage);

     //var

     // P: array[0..1024]of char;

     begin

     // GlobalGetAtomName(msg.WParam,p,1023);

     // GlobalDeleteAtom(msg.WParam);

     // DoCommandLine(String(P));

     end; 

     procedure TMainForm.FormCreate(Sender: TObject);

     begin

     Caption:='Кодирование';

     DragAcceptFiles(Handle,TRUE);

     if Decode then BitBtn1.Enabled:=false;

     end; 

     procedure TMainForm.BitBtn1Click(Sender: TObject);

     begin

     OptionsForm.ShowModal;

     end; 

     procedure TMainForm.StopDblClick(Sender: TObject);

     begin

     Close;

     end; 

     procedure ValidateFiles;

     var

     i,k: integer;

     begin

     with MainForm.Files do

     begin

     i:=0;

     while i<=Items.Count-2 do

     begin

     k:=i+1;

     while k<=Items.Count-1 do

     begin

     if CompareText(Items.Strings[i],Items.Strings[k])=0 then

     begin

     Items.Delete(k);

     continue;

     end;

     inc(k);

     end;

     inc(i);

     end;

     end;

     end; 

     procedure TMainForm.FileDrop(var msg:TWMDropFiles);

     var

     i,count: integer;

     p: pchar;

     s: string;

     attr:LongWord;

     begin

     msg.Result:=0;

     count:=DragQueryFile(Msg.Drop,$ffffffff,nil,0);

     getmem(p,1024);

     for i:=0 to count-1 do

     begin

     DragQueryFile(msg.Drop,i,p,1024);

     s:=StrPas(p);

     attr:=GetFileAttributes(PCHAR(s));

     if attr<>$ffffffff then

     begin

     if (attr and FILE_ATTRIBUTE_DIRECTORY) = 0 then

     begin

     if Decode then

     begin

     if Pos('.crf',lowercase(s))<>0 then

     files.Items.Add(s);

     end else

     begin

     if Pos('.crf',lowercase(s))=0 then

     files.Items.Add(s);

     end;

     end;

     end;

     end;

     freemem(p,1024);

     DragFinish(msg.Drop);

     ValidateFiles;

     end; 

     function NoMethods:Boolean;

     var

     i:integer;

     begin

     result:=true;

     for i:=1 to QolMethods do if used[i] then result:=false;

     end; 

     procedure TMainForm.GoDblClick(Sender: TObject);

     var

     i: integer;

     begin

     if files.Items.Count=0 then

     begin

     ShowMessage('Список  файлов пуст');

     Exit;

     end;

     ValidateFiles;

     if Decode then

     begin

     if MainKey.Text='' then begin

     ShowMessage('Вы забыли ввести ключ');

     exit;

     end;

     if DecodeKey<>0 then begin

     ShowMessage('Введен неправильный ключ');

     Exit;

     end;

     if NoMethods then begin

     ShowMessage('Не выбрано ни одного метода');

     Exit;

     end;

     ProgressForm.InitProgress(files.Items.Count,'Декодирование');

     ProgressForm.Show;

     for i:=0 to files.items.count-1 do

     begin

     DoDecoding(files.items.strings[i]);

     end;

     ProgressForm.Hide;

     end else

     begin

     if NoMethods then begin

     ShowMessage('Не выбрано ни одного метода');

     Exit;

     end;

     ProgressForm.InitProgress(files.Items.Count,'Кодирование');

     ProgressForm.Show;

     for i:=0 to files.items.count-1 do

     begin

     DoCoding(files.items.strings[i]);

     end;

     ProgressForm.Hide;

     end;

     end; 

     procedure TMainForm.BitBtn2Click(Sender: TObject);

     var

     T: TRegistry;

     begin

     T:=TRegistry.Create;

     T.RootKey:=HKEY_LOCAL_MACHINE;

     T.OpenKey('\Software\Laynik Group\[LG] Hazard Encrypter 2000',True);

     Open.InitialDir:=T.ReadString('Lastpath');

     if Open.Execute then

     begin

     files.Items.AddStrings(Open.files);

     validatefiles;

     T.WriteString('Lastpath',ExtractFileDir(Open.Files.Strings[Open.Files.Count-1]));

     end;

     T.Free;

     end; 

     procedure TMainForm.BitBtn3Click(Sender: TObject);

     begin

     if (files.Items.Count=0) or (files.ItemIndex=-1) then exit;

     files.Items.Delete(files.ItemIndex);

     end; 

     procedure TMainForm.BitBtn6Click(Sender: TObject);

     begin

     files.clear;

     end; 

     end. 

     unit CodingUnit; 

     interface 

     uses Classes,SysUtils,Dialogs,CodingTools,K1,K2,K3,GOST; 

     Const

     PIECE_LENGTH = $FFFF; 

     // Direction constants

     diForward = 1;

     diBackward = 0; 

     // ERROR VALUES

     CL_ERROR_EMPTYLINE = -1;

     CL_ERROR_NOFILENAME = -2; 

     function Coding_Kir(Buf: Pointer; Size: LongInt; Param: TCodingParameters): Integer;

     function DeCoding_Kir(Buf: Pointer; Size: LongInt; Param: TCodingParameters): Integer;

     function DoCoding(S: String): integer;

     function DoDecoding(S: String): integer;

     function MethodIndex(const S: String):integer;

     function MethodByChar(const C: Char):integer; 

     const

     QolMethods = 4;

     Methods:array[1..QolMethods] of TCodingFunction =

     ((MethodName:'ГОСТ 28147-89 (ПЗ)';MethodKey:'G';MethodProc:Coding_GOST;MethodDecProc:Coding_GOST;

     KeyMinLength:32;KeyMaxLength:32;KeyMinMessage:'Ключ  должен быть длиной 32 символa';KeyMaxMessage:'Ключ  должен быть длиной 32 символa';

     MethodDescription:'Кодирование по ГОСТ 28147-89 (простая замена)'), 

     (MethodName:'ГОСТ 28147-89 (Г)';MethodKey:'G';MethodProc:Coding_GOST;MethodDecProc:Coding_GOST;

     KeyMinLength:32;KeyMaxLength:32;KeyMinMessage:'Ключ  должен быть длиной 32 символa';KeyMaxMessage:'Ключ должен быть длиной 32 символa';

     MethodDescription:'Кодирование по ГОСТ 28147-89 (гаммирование)'), 

     (MethodName:'К1';MethodKey:'K';MethodProc:Coding_K1;MethodDecProc:DeCoding_K1;

     KeyMinLength:8;KeyMaxLength:8;KeyMinMessage:'Ключ должен быть длиной 8 символов';KeyMaxMessage:'Ключ должен быть длиной 8 символов';

     MethodDescription:'Сумма  по модулю два'), 

     (MethodName:'К2';MethodKey:'L';MethodProc:Coding_K2;MethodDecProc:DeCoding_K2;

     KeyMinLength:3;KeyMaxLength:8;KeyMinMessage:'Минимальная длина ключа - 3 символа';KeyMaxMessage:'Ключ должен быть длиной менее 9 символов';

     MethodDescription:'Циклический  сдвиг')); 

     UsedMethods:array[1..QolMethods] of TCodingParameters =

     ((Key:'';WayCount:1;Direction:1),

     (Key:'';WayCount:1;Direction:1),

     (Key:'';WayCount:1;Direction:1),

     (Key:'';WayCount:1;Direction:1));

     Used: array[1..QolMethods] of boolean = (false,

     false,

     false,

     false); 

     implementation 

     uses TestUnit, ProgressUnit; 

     function MethodIndex(const S: String):integer;

Информация о работе Защита информации от несанкционированного доступа