Автор работы: Пользователь скрыл имя, 08 Ноября 2011 в 19:02, курсовая работа
В настоящее время большое внимание уделяется информации, недаром наш век называют «информационным». Во время того, как люди познают технологии хранения и передачи информации, встает вопрос о ее защите от несанкционированного доступа. Для решения этой проблемы было разработано большое количество разнообразных методов кодирования информации, которые могут быть реализованы программно. Данная разработка представляет собой программный модуль, обеспечивающий шифрование и расшифровывание информационных блоков.
АННОТАЦИЯ
ВВЕДЕНИЕ
Постановка задачи
Основные понятия
Выбор методов шифрования
Программная реализация
Общее описание
Дополнительные модули
Руководство пользователя
ЗАКЛЮЧЕНИЕ
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
ПРИЛОЖЕНИЕ А
begin
a:=Pointer(LongWord(Buf)+
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[
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)+
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[
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)+
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[
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)+
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:=
KeyEdit.Enabled:=B;
WayCountEdit.Enabled:=B;
end;
procedure
TOptionsForm.BitBtn5Click(
begin
Close;
MainForm.GenerateKey;
end;
procedure
TOptionsForm.FormCreate(
var i: integer;
begin
for i:=1 to QolMethods do
begin
MethodsBox.Items.Add(
Used[i]:=false;
end;
UsedMethodsBox.Clear;
EnableKeys(False);
DescMemo.Clear;
end;
procedure
TOptionsForm.BitBtn4Click(
var
i: integer;
begin
UsedMethodsBox.Clear;
for i:=1 to QolMethods do Used[i]:=false;
EnableKeys(False);
DescMemo.Clear;
end;
procedure
TOptionsForm.BitBtn3Click(
begin
If UsedMethodsBox.ItemIndex=-1 then exit;
Used[MethodIndex(
UsedMethodsBox.Items.
If UsedMethodsBox.Items.Count=0 then EnableKeys(False);
DescMemo.Clear;
end;
procedure
TOptionsForm.BitBtn2Click(
begin
If MethodsBox.ItemIndex=-1 then exit;
if
UsedMethodsBox.Items.IndexOf(
begin
UsedMethodsBox.Items.Add(
Used[MethodsBox.
EnableKeys(True);
UsedMethodsBox.ItemIndex:
UsedMethodsBox.OnClick(
end;
end;
procedure
TOptionsForm.BitBtn1Click(
var i: integer;
begin
UsedMethodsBox.Clear;
for i:=1 to QolMethods do
begin
UsedMethodsBox.Items.Add(
Used[i]:=true;
end;
EnableKeys(True);
end;
procedure
TOptionsForm.
Информация о работе Защита информации от несанкционированного доступа