Автор работы: Пользователь скрыл имя, 08 Ноября 2011 в 19:02, курсовая работа
В настоящее время большое внимание уделяется информации, недаром наш век называют «информационным». Во время того, как люди познают технологии хранения и передачи информации, встает вопрос о ее защите от несанкционированного доступа. Для решения этой проблемы было разработано большое количество разнообразных методов кодирования информации, которые могут быть реализованы программно. Данная разработка представляет собой программный модуль, обеспечивающий шифрование и расшифровывание информационных блоков.
АННОТАЦИЯ
ВВЕДЕНИЕ
Постановка задачи
Основные понятия
Выбор методов шифрования
Программная реализация
Общее описание
Дополнительные модули
Руководство пользователя
ЗАКЛЮЧЕНИЕ
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
ПРИЛОЖЕНИЕ А
MainKey.ReadOnly:=false;
MainKey.Text:='';
if ParamCount>1 then
begin
for i:=2 to ParamCount do
begin
Files.Items.Add(ParamStr(
end;
end;
end else
begin
//кодирование
if ParamCount>0 then
for i:=1 to ParamCount do
begin
Files.Items.Add(ParamStr(
end;
Decode:=False;
end;
end;
procedure TMainForm.AddCmdLine(var msg: TMessage);
//var
// P: array[0..1024]of char;
begin
//
GlobalGetAtomName(msg.WParam,
// GlobalDeleteAtom(msg.WParam);
// DoCommandLine(String(P));
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
Caption:='Кодирование';
DragAcceptFiles(Handle,
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],
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.
getmem(p,1024);
for i:=0 to count-1 do
begin
DragQueryFile(msg.Drop,i,
s:=StrPas(p);
attr:=GetFileAttributes(
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.
ProgressForm.Show;
for i:=0 to files.items.count-1 do
begin
DoDecoding(files.items.
end;
ProgressForm.Hide;
end else
begin
if NoMethods then begin
ShowMessage('Не выбрано ни одного метода');
Exit;
end;
ProgressForm.
ProgressForm.Show;
for i:=0 to files.items.count-1 do
begin
DoCoding(files.items.
end;
ProgressForm.Hide;
end;
end;
procedure TMainForm.BitBtn2Click(Sender: TObject);
var
T: TRegistry;
begin
T:=TRegistry.Create;
T.RootKey:=HKEY_LOCAL_
T.OpenKey('\Software\
Open.InitialDir:=T.
if Open.Execute then
begin
files.Items.AddStrings(
validatefiles;
T.WriteString('Lastpath',
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.
end;
procedure TMainForm.BitBtn6Click(Sender: TObject);
begin
files.clear;
end;
end.
unit
CodingUnit;
interface
uses
Classes,SysUtils,Dialogs,
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..
((MethodName:'ГОСТ
28147-89 (ПЗ)';MethodKey:'G';
KeyMinLength:32;
MethodDescription:'
(MethodName:'ГОСТ
28147-89 (Г)';MethodKey:'G';MethodProc:
KeyMinLength:32;
MethodDescription:'
(MethodName:'К1';
KeyMinLength:8;
MethodDescription:'Сумма
по модулю два'),
(MethodName:'К2';
KeyMinLength:3;
MethodDescription:'
UsedMethods:array[1..
((Key:'';WayCount:1;
(Key:'';WayCount:1;
(Key:'';WayCount:1;
(Key:'';WayCount:1;
Used: array[1..QolMethods] of boolean = (false,
false,
false,
false);
implementation
uses
TestUnit, ProgressUnit;
function MethodIndex(const S: String):integer;
Информация о работе Защита информации от несанкционированного доступа