Автор работы: Пользователь скрыл имя, 08 Ноября 2011 в 19:02, курсовая работа
В настоящее время большое внимание уделяется информации, недаром наш век называют «информационным». Во время того, как люди познают технологии хранения и передачи информации, встает вопрос о ее защите от несанкционированного доступа. Для решения этой проблемы было разработано большое количество разнообразных методов кодирования информации, которые могут быть реализованы программно. Данная разработка представляет собой программный модуль, обеспечивающий шифрование и расшифровывание информационных блоков.
АННОТАЦИЯ
ВВЕДЕНИЕ
Постановка задачи
Основные понятия
Выбор методов шифрования
Программная реализация
Общее описание
Дополнительные модули
Руководство пользователя
ЗАКЛЮЧЕНИЕ
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
ПРИЛОЖЕНИЕ А
Программа работает под управлением ОС Windows 95/98/ME и требует правильной инсталляции. После инсталляции программу можно запустить из меню «Пуск» либо из командной строки эмуляции MS-DOS.
Командная строка имеет следующий вид:
Hazard.exe [/D] [путь к файлу [путь к файлу […]]]
/D – дешифрование
Чтобы запустить программу в режиме шифрования или дешифрования из графической оболочки Windows нужно воспользоваться соответствующими ярлыками из меню «Программы».
Чтобы добавить файлы в список шифрования/дешифрования можно воспользоваться соответствующей кнопкой на главной панели программы, либо «перетащить» их из окна проводника Windows.
Чтобы выбрать алгоритм шифрования нужно нажать кнопку «Настройки». Появится окно со списками поддерживаемых и применяющихся методов и полем ввода ключа.
После
выбора методов программа рассчитает
окончательный ключ, который может
быть использован для
При нажатии на кнопку запуска появится индикатор прогресса, который отобразит состояние процесса шифрования текущего файла и процесса шифрования в общем.
При дешифровании следует учитывать, что программа расшифровывает файлы только с расширением .crf.
Заключение
В результате курсовой работы была разработана первая версия программы, осуществляющей шифрование информации. В дальнейшем предполагается разработка и усовершенствование комплекса программ, обеспечивающих защиту информации от несанкционированного доступа. В процессе разработки были закреплены навыки шифрования информации по ГОСТ 28147-89 и программирования на ассемблере.
Библиографический
список
Приложение А
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','
Result:=True;
end;
begin
Decode:=false;
If not AlreadyRunning then
begin
Application.Initialize;
Application.Title := '[LG] Hazard';
Application.CreateForm(
Application.CreateForm(
Application.CreateForm(
MainForm.DoCommandLine(
Application.Run;
end else
begin
MessageBox(0,'Приложение
уже запущено','Ошибка',MB_
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[
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)+
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[
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)+
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[
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
Информация о работе Защита информации от несанкционированного доступа