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

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

Описание

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

Содержание

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

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

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

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

     begin

     a:=Pointer(LongWord(Buf)+j*8);

     r:=a;

     K2Coding64bits(A^,R^,B);

     end;

     end;

     result:=0;

     end;

     function DeCoding_K2(Buf: Pointer; Size: LongWord; Param: TCodingParameters):Integer;

     var

     i,j,l:integer;

     a,r:^word64;

     k: word64;

     b: byte;

     begin

     b:=0;

     for i:=0 to 7 do

     k.v8[i]:=BYTE(Param.Key[i]);

     convert(K,LshTable,K);

     for i:=0 to 7 do b:=b xor K.v8[i];

     l:=Size div 8;

     for i:=1 to Param.WayCount do

     begin

     for j:=0 to l-1 do

     begin

     a:=Pointer(LongWord(Buf)+j*8);

     r:=a;

     K2DeCoding64bits(A^,R^,B);

     end;

     end;

     result:=0;

     end; 

     end. 

     unit K3; 

     interface

     uses CodingTools; 

     function Coding_K3(Buf: Pointer; Size: LongWord; Param: TCodingParameters):Integer;

     function DeCoding_K3(Buf: Pointer; Size: LongWord; Param: TCodingParameters):Integer; 

     implementation

     uses SysUtils; 

     const

     FShTable: TConvertTable64 =

     (57,49,41,33,25,17, 9, 1,59,51,

     43,35,27,19,11, 3,61,53,45,37,

     29,21,13, 5,63,55,47,39,31,23,

     15, 7,56,48,40,32,24,16, 8, 0,

     58,50,42,34,26,18,10, 2,60,52,

     44,36,28,20,12, 4,62,54,46,38,

     30,22,14, 6); 

     LShTable: TConvertTable64 =

     (39, 7,47,15,55,23,63,31,38,6,

     46,14,54,22,62,30,37, 5,45,13,

     53,21,61,29,36, 4,44,12,52,20,

     60,28,35, 3,43,11,51,19,59,27,

     34, 2,42,10,50,18,58,26,33, 1,

     41, 9,49,17,57,25,32, 0,40, 8,

     48,16,56,24); 

     procedure K3Coding64bits(A: word64; var R: word64; B: byte);

     begin

     convert(A,FShTable,R);

     asm

     push esi

     mov esi,DWORD[R]

     mov cl,[b]

     ror dword[esi],cl

     add esi,4

     mov cl,[b]

     ror dword[esi],cl

     pop esi

     end;

     end; 

     procedure K3DeCoding64bits(A: word64; var R: word64; B: Byte);

     begin

     asm

     mov cl,[b]

     rol DWORD[A],cl

     mov cl,[b]

     rol DWORD[A+4],cl

     end;

     convert(A,LShTable,R);

     end; 

     function Coding_K3(Buf: Pointer; Size: LongWord; Param: TCodingParameters):Integer;

     var

     i,j:integer;

     a,r: ^word64;

     k: word64;

     b: byte;

     begin

     b:=0;

     k.v32[0]:=0;

     k.v32[1]:=0;

     for i:=0 to StrLen(Param.Key)-1 do

     k.v8[i]:=BYTE(Param.Key[i]);

     convert(K,LshTable,K);

     for i:=0 to 7 do b:=b xor K.v8[i];

     for i:=1 to Param.WayCount do

     begin

     for j:=0 to Size-8 do

     begin

     a:=Pointer(LongWord(Buf)+j);

     r:=a;

     K3Coding64bits(A^,R^,B);

     end;

     end;

     result:=0;

     end; 

     function DeCoding_K3(Buf: Pointer; Size: LongWord; Param: TCodingParameters):Integer;

     var

     i,j:integer;

     a,r:^word64;

     k: word64;

     b: byte;

     begin

     b:=0;

     k.v32[0]:=0;

     k.v32[1]:=0;

     for i:=0 to StrLen(Param.Key)-1 do

     k.v8[i]:=BYTE(Param.Key[i]);

     convert(K,LshTable,K);

     for i:=0 to 7 do b:=b xor K.v8[i];

     for i:=1 to Param.WayCount do

     begin

     for j:=Size-8 downto 0 do

     begin

     a:=Pointer(LongWord(Buf)+j);

     r:=a;

     K3DeCoding64bits(A^,R^,B);

     end;

     end;

     result:=0;

     end; 

     end. 

     unit OptionsUnit; 

     interface 

     uses

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

     StdCtrls, Buttons, Spin, ExtCtrls; 

     type

     TOptionsForm = class(TForm)

     UsedMethodsBox: TListBox;

     MethodsBox: TListBox;

     Label1: TLabel;

     Label2: TLabel;

     BitBtn1: TBitBtn;

     BitBtn2: TBitBtn;

     BitBtn3: TBitBtn;

     BitBtn4: TBitBtn;

     BitBtn5: TBitBtn;

     KeyEdit: TEdit;

     Label3: TLabel;

     DirectionGroup: TRadioGroup;

     WayCountEdit: TSpinEdit;

     Label4: TLabel;

     DescMemo: TMemo;

     procedure BitBtn5Click(Sender: TObject);

     procedure FormCreate(Sender: TObject);

     procedure BitBtn4Click(Sender: TObject);

     procedure BitBtn3Click(Sender: TObject);

     procedure BitBtn2Click(Sender: TObject);

     procedure BitBtn1Click(Sender: TObject);

     procedure UsedMethodsBoxClick(Sender: TObject);

     procedure DirectionGroupExit(Sender: TObject);

     procedure KeyEditExit(Sender: TObject);

     procedure WayCountEditExit(Sender: TObject);

     procedure EnableKeys(B: Boolean);

     procedure FormClose(Sender: TObject; var Action: TCloseAction);

     private

     { Private declarations }

     public

     { Public declarations }

     end; 

     var

     OptionsForm: TOptionsForm; 

     implementation

     {$R *.DFM} 

     uses CodingUnit, TestUnit; 

     procedure TOptionsForm.EnableKeys;

     begin

     DirectionGroup.Enabled:=B;

     KeyEdit.Enabled:=B;

     WayCountEdit.Enabled:=B;

     end; 

     procedure TOptionsForm.BitBtn5Click(Sender: TObject);

     begin

     Close;

     MainForm.GenerateKey;

     end;

     procedure TOptionsForm.FormCreate(Sender: TObject);

     var i: integer;

     begin

     for i:=1 to QolMethods do

     begin

     MethodsBox.Items.Add(Methods[i].MethodName);

     Used[i]:=false;

     end;

     UsedMethodsBox.Clear;

     EnableKeys(False);

     DescMemo.Clear;

     end; 

     procedure TOptionsForm.BitBtn4Click(Sender: TObject);

     var

     i: integer;

     begin

     UsedMethodsBox.Clear;

     for i:=1 to QolMethods do Used[i]:=false;

     EnableKeys(False);

     DescMemo.Clear;

     end;

     procedure TOptionsForm.BitBtn3Click(Sender: TObject);

     begin

     If UsedMethodsBox.ItemIndex=-1 then exit;

     Used[MethodIndex(UsedMethodsBox.Items.Strings[UsedMethodsBox.ItemIndex])]:=false;

     UsedMethodsBox.Items.Delete(UsedMethodsBox.ItemIndex);

     If UsedMethodsBox.Items.Count=0 then EnableKeys(False);

     DescMemo.Clear;

     end; 

     procedure TOptionsForm.BitBtn2Click(Sender: TObject);

     begin

     If MethodsBox.ItemIndex=-1 then exit;

     if UsedMethodsBox.Items.IndexOf(Methods[MethodsBox.ItemIndex+1].MethodName)=-1 then

     begin

     UsedMethodsBox.Items.Add(Methods[MethodsBox.ItemIndex+1].MethodName);

     Used[MethodsBox.ItemIndex+1]:=true;

     EnableKeys(True);

     UsedMethodsBox.ItemIndex:=UsedMethodsBox.Items.Count-1;

     UsedMethodsBox.OnClick(Self);

     end;

     end; 

     procedure TOptionsForm.BitBtn1Click(Sender: TObject);

     var i: integer;

     begin

     UsedMethodsBox.Clear;

     for i:=1 to QolMethods do

     begin

     UsedMethodsBox.Items.Add(Methods[i].MethodName);

     Used[i]:=true;

     end;

     EnableKeys(True);

     end; 

     procedure TOptionsForm.UsedMethodsBoxClick(Sender: TObject);

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