на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Защита информации от несанкционированного доступа
p align="left">При нажатии на кнопку запуска появится индикатор прогресса, который отобразит состояние процесса шифрования текущего файла и процесса шифрования в общем.

При дешифровании следует учитывать, что программа расшифровывает файлы только с расширением .crf.

Заключение

В результате курсовой работы была разработана первая версия программы, осуществляющей шифрование информации. В дальнейшем предполагается разработка и усовершенствование комплекса программ, обеспечивающих защиту информации от несанкционированного доступа. В процессе разработки были закреплены навыки шифрования информации по ГОСТ 28147-89 и программирования на ассемблере.

Библиографический список

1. Конспект лекций по курсу «Кодирование и защита информации»

2. Андрей Винокуров. «Алгоритм шифрования ГОСТ 28147-89, его использование и реализация для компьютеров платформы Intel x86»

3. Михаил Гук. «Процессоры Pentium II, Pentium Pro и просто Pentium», Санкт-Петербург «Питер», 1999 г.

Приложение А

program Hazard;

uses

Windows,

Messages,

SysUtils,

Forms,

TestUnit in 'TestUnit.pas' {MainForm},

CodingUnit in 'CodingUnit.pas',

OptionsUnit in 'OptionsUnit.pas' {OptionsForm},

K1 in 'K1.pas',

K2 in 'K2.pas',

K3 in 'K3.pas',

ProgressUnit in 'ProgressUnit.pas' {ProgressForm},

GOST in 'GOST.pas';

{$R *.RES}

{$R Laynik.res}

function AlreadyRunning: boolean;

begin

Result:=False;

if FindWindow('TMainForm','Кодирование')<>0 then

Result:=True;

end;

begin

Decode:=false;

If not AlreadyRunning then

begin

Application.Initialize;

Application.Title := '[LG] Hazard';

Application.CreateForm(TMainForm, MainForm);

Application.CreateForm(TOptionsForm, OptionsForm);

Application.CreateForm(TProgressForm, ProgressForm);

MainForm.DoCommandLine(String(system.CmdLine));

Application.Run;

end else

begin

MessageBox(0,'Приложение уже запущено','Ошибка',MB_ICONSTOP+MB_OK);

end

end.

unit K1;

interface

uses CodingTools;

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

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

implementation

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 K1Coding64bits(A: word64; var R: word64; K1:word64);

begin

convert(A,FShTable,R);

asm

push esi

mov esi,DWORD[R]

mov eax,DWORD[K1]

xor [esi],eax

add esi,4

mov eax,DWORD[K1+4]

xor [esi],eax

pop esi

end;

end;

procedure K1DeCoding64bits(A: word64; var R: word64; K1:word64);

begin

asm

mov eax,DWORD[K1]

xor DWORD[A],eax

mov eax,DWORD[K1+4]

xor DWORD[A+4],eax

end;

convert(A,LShTable,R);

end;

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

var

i,j,l:integer;

a,r: ^word64;

k: word64;

begin

for i:=0 to 7 do

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

convert(K,LshTable,K);

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;

K1Coding64bits(A^,R^,K);

end;

end;

result:=0;

end;

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

var

i,j,l:integer;

a,r:^word64;

k: word64;

begin

for i:=0 to 7 do

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

convert(K,LshTable,K);

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;

K1DeCoding64bits(A^,R^,K);

end;

end;

result:=0;

end;

end.

unit K2;

interface

uses CodingTools;

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

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

implementation

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 K2Coding64bits(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 K2DeCoding64bits(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_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;

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;

Страницы: 1, 2, 3, 4



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.