Реализация криптографического алгоритма (AES) Rijndael

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

(TempIn[12], 2)+IntToHex (TempIn[13], 2)+(TempIn[14], 2)+IntToHex (TempIn[15], 2);

. EditOut. Text:= IntToHex (TempOut[0], 2)+IntToHex (TempOut[1], 2)+(TempOut[2], 2)+IntToHex (TempOut[3], 2)+IntToHex (TempOut[4], 2)+(TempOut[5], 2)+IntToHex (TempOut[6], 2)+IntToHex (TempOut[7], 2)+(TempOut[8], 2)+IntToHex (TempOut[9], 2)+IntToHex (TempOut[10], 2)+(TempOut[11], 2)+IntToHex (TempOut[12], 2)+IntToHex (TempOut[13], 2)+(TempOut[14], 2)+IntToHex (TempOut[15], 2);

//FmStop;:= Dest. Write (TempOut, SizeOf(TempOut));. Write (TempOut, SizeOf(TempOut));

StrToInt(Form1.editDelay.Text);;Done 0 then:= Source. Read (TempIn, Count);Done < Count thenEStreamError. Create(SReadError);(TempIn[Count], SizeOf(TempIn) - Count, 0);(TempIn, ExpandedKey, TempOut);flag = false then

begin

// Вывод входного и выходного блоков

FmStop. EditIn. Text:= IntToHex (TempIn[0], 2)+IntToHex (TempIn[1], 2)+(TempIn[2], 2)+IntToHex (TempIn[3], 2)+IntToHex (TempIn[4], 2)+(TempIn[5], 2)+IntToHex (TempIn[6], 2)+IntToHex (TempIn[7], 2)+(TempIn[8], 2)+IntToHex (TempIn[9], 2)+IntToHex (TempIn[10], 2)+(TempIn[11], 2)+IntToHex (TempIn[12], 2)+IntToHex (TempIn[13], 2)+(TempIn[14], 2)+IntToHex (TempIn[15], 2);

. EditOut. Text:= IntToHex (TempOut[0], 2)+IntToHex (TempOut[1], 2)+(TempOut[2], 2)+IntToHex (TempOut[3], 2)+IntToHex (TempOut[4], 2)+(TempOut[5], 2)+IntToHex (TempOut[6], 2)+IntToHex (TempOut[7], 2)+(TempOut[8], 2)+IntToHex (TempOut[9], 2)+IntToHex (TempOut[10], 2)+(TempOut[11], 2)+IntToHex (TempOut[12], 2)+IntToHex (TempOut[13], 2)+(TempOut[14], 2)+IntToHex (TempOut[15], 2);

StrToInt (Form1.editDelay. Text);;Done StrToInt (Form1.editDelay. Text);;Done < SizeOf(TempOut) thenEStreamError. Create(SWriteError);;. Free;. Label_Status. Caption:= Шифрованиезавершено;;

// ДешифрованиеDecryptAESStreamECB (Source: TStream; Count: cardinal;Key: TAESKey128; Dest: TStream);: TAESExpandedKey128;(Key, ExpandedKey);

// Расширениеключадлядешифрования(Source, Count, ExpandedKey, Dest);

// Дешифрование;DecryptAESStreamECB (Source: TStream; Count: cardinal;ExpandedKey: TAESExpandedKey128; Dest: TStream);: integer;, TempOut: TAESBuffer;: cardinal;: TStringStream;:= TStringStream. Create();Count = 0 then. Position:= 0;:= Source. Size;Count:= Min (Count, Source. Size - Source. Position);Count = 0 then exit;(Count mod SizeOf(TAESBuffer)) > 0 thenEAESError. Create(SInvalidInBufSize);Count >= SizeOf(TAESBuffer) do:= Source. Read (TempIn, SizeOf(TempIn));Done < SizeOf(TempIn) thenEStreamError. Create(SReadError);(TempIn, ExpandedKey, TempOut); flag = false then

// Вывод входного и выходного блоков

FmStop. EditIn. Text:= IntToHex (TempIn[0], 2)+IntToHex (TempIn[1], 2)+(TempIn[2], 2)+IntToHex (TempIn[3], 2)+IntToHex (TempIn[4], 2)+(TempIn[5], 2)+IntToHex (TempIn[6], 2)+IntToHex (TempIn[7], 2)+(TempIn[8], 2)+IntToHex (TempIn[9], 2)+IntToHex (TempIn[10], 2)+(TempIn[11], 2)+IntToHex (TempIn[12], 2)+IntToHex (TempIn[13], 2)+(TempIn[14], 2)+IntToHex (TempIn[15], 2);. EditOut. Text:= IntToHex (TempOut[0], 2)+IntToHex (TempOut[1], 2)+(TempOut[2], 2)+IntToHex (TempOut[3], 2)+IntToHex (TempOut[4], 2)+(TempOut[5], 2)+IntToHex (TempOut[6], 2)+IntToHex (TempOut[7], 2)+(TempOut[8], 2)+IntToHex (TempOut[9], 2)+IntToHex (TempOut[10], 2)+(TempOut[11], 2)+IntToHex (TempOut[12], 2)+IntToHex (TempOut[13], 2)+(TempOut[14], 2)+IntToHex (TempOut[15], 2);

//FmStop;. Write (TempOut, SizeOf(TempOut));

StrToInt(Form1.editDelay.Text);;:=Dest.Write(TempOut,SizeOf(TempOut));DoneStrToInt (Form1.editDelay. Text);;:= Dest. Write (TempOut, SizeOf(TempOut));Done < SizeOf(TempOut) thenEStreamError. Create(SWriteError);(Count, SizeOf(TAESBuffer));;. Free;. Label_Status. Caption:= Дешифрованиезавершено;;TForm1. Button1Click (Sender: TObject);stpath, stext: string;OpenDialog1. Execute = True then. Text:= OpenDialog1. FileName;. Lines. LoadFromFile (Edit1.text);:= Edit1. Text;:= ExtractFileDir(Fpath);:= ExtractFileExt(FPath);CBOpt. Text = Шифрование then. Caption:= Имязашифрованогофайла:;:= stpath + \EncodedFile+stExt;. Caption:= FPath;. Caption:= Имядешифрованогофайла:;

:= stpath + \DecodedFile+stExt;. Caption:= FPath;;;;TForm1. Button2Click (Sender: TObject);, Dest: TFileStream;, DestFile: string;, Stop: cardinal;: integer;

Key: TAESKey128; // Длина ключа и блока 128 бит

SrcBuf, DstBuf: array [0..16383] of byte;, DstSize: integer;Edit1. Text = then exit;

// ШифрованиеCBOpt. Text = Шифрование then_Status. Caption:= Шифрование…;;:= TFileStream. Create (Edit1. Text, fmOpenRead); // Открываемфайлдлячтения. Caption:= IntToStr (Source. Size div 1024) + KB; // Выводразмерафайла;:= Fpath; // Файлназначения:= TFileStream. Create (DestFile, fmCreate); // Создаемновыйфайлилипереписываемужеимеющийся:= Source. Size; // Определение размера источника. WriteBuffer (Size, SizeOf(Size)); // Задаем размер буфера назначения

FillChar (Key, SizeOf(Key), 0); // Заполняемключнулями(PChar(Edit2. Text)^, Key, Min (SizeOf(Key), Length (Edit2. Text))); // Вначалоключазаписываемпароль:= GetTickCount;(Source, 0, Key, Dest);:= GetTickCount;_Time. Caption:= IntToStr (Stop - Start) + ms;;. Free;;. Free;;;CBOpt. Text = Дешифрование then

// Дешифрование_Status. Caption:= Дешифрование…;;:= TFileStream. Create (Edit1. Text, fmOpenRead); // Источник - зашифрованныйфайл. ReadBuffer (Size, SizeOf(Size)); // Считывание Size данныхизпотока:= fpath;(Key, SizeOf(Key), 0); // Заполняемключнулями(PChar(Edit2. Text)^, Key, Min (SizeOf(Key), Length (Edit2. Text))); // Вначалоключазаписываемпароль:= Fpath;:= TFileStream. Create (DestFile, fmCreate); // Назначение:= GetTickCount;(Source, Source. Size - Source. Position, Key, Dest);. Size:= Size;:= GetTickCount;_Time. Caption:= IntToStr (Stop - Start) + ms;;. Free;;. Free;;;;TForm1. ButtonStopClick (Sender: TObject);:= true;. ShowModal;. ProcessMessages;not Flag;;TForm1.CBOptChange (Sender: TObject);CBOpt. Text = Шифрование then. Caption:= Шифровать;. Caption:= Имязашифрованногофайла;. Caption:= Дешифровать;. Caption:= Имя Дешифрованного файла;;;TForm1. FormActivate (Sender: TObject);:= false;;TForm1. RadioGroup1Click (Sender: TObject);RadioGroup1. ItemIndex = 0 then EditDelay. Enabled:= false else. Enabled:= true;;TForm1.MFExitClick (Sender: TObject);;;TForm1.MFChooseClick (Sender: TObject);. Click;;TForm1. FormCreate (Sender: TObject);. HelpFile:= GetCurrentDir +\AES.hlp;;TForm1.MHHelpClick (Sender: TObject);. HelpCommand (HELP_CONTENTS, 1);

end;.

 

 

Заключение

 

Среди способов защиты информации наиболее важным считается криптографический. Он предусматривает такое преобразование информации, при котором она становит?/p>