Разработка программного средства, обеспечивающего криптографическую защиту файлов
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
тва в статике (c 16.09.2012 по 13.10.2012):
-тестирование программных модулей;
-комплексирование модулей, поэтапное сведение в единый комплекс;
-локализация ошибок, корректировка исходных текстов, информационных потоков, перекомпиляция.
Этап 5.Разработка технической документации и выпуск машинных носителей (с .14.10.2012 по 10.11.2012):
-изготовление исследовательской документации (отчетов);
-изготовление эксплуатационной документации (инструкции, руководства, методические указания).
Этап 6.Тестовые испытания программного комплекса (с 11.11.2012 по 9.12.2012):
-испытание на информационную полноту;
-испытание на полноту функционирования;
-протоколы и акты испытаний.
П.А.7 Порядок контроля и приемки
Порядок и контроль приемки определяются заведующим кафедрой ПОВТ и АС и основаны на демонстрации знаний технологии и умении создавать программные средства для различных предметных областей. Главным требованием к приемке является наличие правильно работающего программного средства, иллюстрируемого тестовым примером и отчетом, представленным в печатном виде.
Разработчик технического задания:
Матющенко Александр Евгеньевич
(подпись)
___ ____________ 2012г.
Приложение Б
unit Unit3;
interface, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ComCtrls, FileCtrl, CryptoAPI, CRC64, ExtCtrls;_key = record_RC: Array [1..8] of cardinal; //256bit ключ шифрования RC6_IDEA: Array [1..4] of cardinal;//128bit ключ шифрования IDEA_CONST: Array [1..4] of cardinal;//128bit вектор инициализации64_2: int64; //64bit конт сумма ОТКРЫТЫХ полей выше
Key_counter: cardinal; //32bit счетчик - меняется каждый сеанс работы с ключом
data_key: cardinal;//32bit дата создания ключа ДДММГГ_hash: string[128]; //512bit: string[60];: string[30];_1: int64;//64;= class(TForm): TLabel;: TGroupBox;: TLabel;: TLabel;: TEdit;: TLabel;: TEdit;: TLabel;: TEdit;: TLabel;: TEdit;: TLabel;: TEdit;: TProgressBar;: TButton;: TGroupBox;: TLabel;: TDriveComboBox;: TLabel;: TImage;WMGetSysCommand(var Message : TMessage); message WM_SYSCOMMAND;Button1Click(Sender: TObject);Edit4Change(Sender: TObject);DriveComboBox1Change(Sender: TObject);FormCreate(Sender: TObject);Image1Click(Sender: TObject);
{ Private declarations }
{ Public declarations };: TForm3;_numdisk: cardinal;CRC64_sum(str: string): int64;new_yserkey;hexTOdec(str: string):cardinal;Unit1, Unit2;
{$R *.dfm}
{======================================}hexTOdec(str: string):cardinal;HEX : ARRAY[a..f] OF INTEGER = (10,11,12,13,14,15);,i : cardinal;:=ffffffff;:= 0;i := 1 TO Length(str) DOstr[i] < A THEN Int := Int * 16 + ORD(str[i]) - 48Int := Int * 16 + HEX[str[i]];:= int;;
{======================================}c_GetTempPath: String; //путь к TEMP папке: array[0..1023] of Char;(Result, Buffer, GetTempPath(Sizeof(Buffer)-1,Buffer));;
{======================================}CRC64_sum(str: string): int64;: TFileStream;: textfile;: int64;: string;:=c_GetTempPath;(f1, TempPath+\+ crc.qwl);(f1);(f1, str);(f1);:= TFileStream.Create(TempPath+\+ crc.qwl, fmShareDenyNone);:=(CRC64Stream(INFILE, SIZEOF(INFILE), 1024));(TempPath+\+ crc.qwl);_sum:=crc;;
{================}new_yserkey;= 4294967295;: LongWord;, d, Control_hash, Lite_key, S_key, str: String;: integer;_user, pl: cardinal; //номер юзера_key: USB_key;: file of USB_key;_: TDateTime;
y, m, day: word; //для перевода даты в число
begin();_key.Key_counter:= Random(max); //одноразовый счетчик
//размножаем и загоняем в буфер: пароль_соль_id USB
d:=;:=;:= 76 + Form3.edit4.text + 4387swqsalt_ewui3765_saltvlkskl09 + Form3.edit3.text + 4387654salt_0745963765_saltvlkrto743 + inttostr(G_numdisk);i:=1 to 765 do:= buffer + d;:= HashStr(HASH_SHA512, buffer, Control_hash); //:=;:=;:= Form3.edit3.text + 4333salt_OUedie437_saltvlkskl09 + Form3.edit4.text + AQQQdkwpsalt_07CNJWEKUEk_saltvdw7DH3 + inttostr(G_numdisk);i:=1 to 801 do:= buffer + d;:= HashStr(HASH_SHA512, buffer, Lite_key); //
{MessageDlg(Control_hash, mtWarning, [mbOK],0);(Lite_key, mtWarning, [mbOK],0);}();_key.Key_RC[1]:= Random(max);_key.Key_RC[2]:= Random(max);_key.Key_RC[3]:= Random(max);_key.Key_RC[4]:= Random(max);_key.Key_RC[5]:= Random(max);_key.Key_RC[6]:= Random(max);_key.Key_RC[7]:= Random(max);_key.Key_RC[8]:= Random(max);_key.Key_IDEA[1]:=Random(max);_key.Key_IDEA[2]:=Random(max);_key.Key_IDEA[3]:=Random(max);_key.Key_IDEA[4]:=Random(max);_key.Key_CONST[1]:=Random(max);_key.Key_CONST[2]:=Random(max);_key.Key_CONST[3]:=Random(max);_key.Key_CONST[4]:=Random(max);
// MessageDlg(RC6 +inttostr(U_key.Key_RC[1]) + + inttostr(U_key.Key_RC[2]) + + inttostr(U_key.Key_RC[3]) + + inttostr(U_key.Key_RC[4]) + + inttostr(U_key.Key_RC[5]) + + inttostr(U_key.Key_RC[6]) + + inttostr(U_key.Key_RC[7]) + + inttostr(U_key.Key_RC[8]) , mtWarning, [mbOK],0);
// MessageDlg(IDEA +inttostr(U_key.Key_IDEA[1]) + + inttostr(U_key.Key_IDEA[2]) + + inttostr(U_key.Key_IDEA[3]) + + inttostr(U_key.Key_IDEA[4]), mtWarning, [mbOK],0);
// MessageDlg(CONST +inttostr(U_key.Key_CONST[1]) + + inttostr(U_key.Key_CONST[2]) + +inttostr(U_key.Key_CONST[3]) + +inttostr(U_key.Key_CONST[4]) , mtWarning, [mbOK],0);
//считаем CRC64 от открытых ключей и вектора инициализации:
buffer:=;i:=1 to 8 do:= buffer + inttostr(U_key.Key_RC[i]);i:=1 to 4 do:= buffer + inttostr(U_key.Key_IDEA[i]);i:=1 to 4 do:= buffer + inttostr(U_key.Key_CONST[i]);_key.CRC64_2:= CRC64_sum(buffer);
// MessageDlg(inttostr(U_key.Key_RC[1]) + + inttostr(U_key.Key_RC[2]) + + inttostr(U_key.Key_RC[3]) + + inttostr(U_key.Key_RC[4]) + + inttostr(U_key.Key_RC[5]) + + inttostr(U_key.Key_RC[6]) + + inttostr(U_key.Key_RC[7]) + + inttostr(U_key.Key_RC[8]) , mtWarning, [mbOK],0);
// MessageDlg(inttostr(U_key.Key_IDEA[1]) + + inttostr(U_key.Key_IDEA[2]) + + inttostr(U_key.Key_IDEA[3]) + + inttostr(U_key.Key_IDEA[4]), mtWarning, [mbOK],0);
// MessageDlg(inttostr(U_key.Key_CONST[1]) + + inttostr(U_key.Key_CONST[2]) + +inttostr(U_key.Key_CONST[3]) + +inttostr(U_key.Key_CONST[4]) , mtWarning, [mbOK],0);
// MessageDlg(inttostr(U_key.CRC64_2), mtWarning, [mbOK],0);:=;:=;:= inttostr(U_key.Key_counter) + 56437gc77dg73643276 + Form3.edit3.text + 44322salt_4327h4897d3946f + Form3.edit4.text + Afrejoiewpsalt_04o2hudbuk_salt4222222 + inttostr(G_numdisk);i:=1 to 707 do:= buffer + d; := HashStr(HASH_SHA512, buffer, S_key); // S_key - используется для шифрования первого блока ключа - ключей и вектора иниц
buffer:=copy(S_key, 1,8);:= StrToInt($+buffer);_key.Key_RC[1]:=U_key.Key_RC[1] xor pl;:=copy(S_key, 8,8);:= StrToInt($+buffer);_key.Key_RC[2]:=U_key.Key_RC[2] xor pl;:=copy(S_key, 16,8);:= StrToInt($+buffer);_key.Key_RC[3]:=U_key.Key_RC[3] xor pl;:=copy(S_key, 24,8);:= StrToInt($+buffer);_key.Key_RC[4]:=U_key.Key_RC[4] xor pl;:=copy(S_key, 32,8);:= StrToInt($+buffer);_key.Key_RC[5]:=U_key.Key_RC[5] xor pl;:=copy(S_key, 40,8);:= StrToInt($+buffer);_key.Key_RC[6]:=U_key.Key_RC[6] xor pl;:=copy(S_key, 48,8);:= StrToInt($+buffer);_key.Key_RC[7]:=U_key.Key_RC[7] xor pl;:=copy(S_key, 56,8);:= StrToInt($+buffer);_key.Key_RC[8]:=U_key.Key_RC[8] xor pl;
//////////
//MessageDlg(inttostr(U_key.Key_RC[1]) + + inttostr(U_key.Key_RC[2]) + + inttostr(U_key.Key_RC[3]) + + inttostr(U_key.Key_RC[4]) + + inttostr(U_key.Key_RC[5]) + + inttostr(U_key.Key_RC[6]) + + inttostr(U_key.Key_RC[7]) + + inttostr(U_key.Key_RC[8]) , mtWarning, [mbOK],0);
/////////:=copy(S_key, 64,8);:= StrToInt($+buffer);_key.Key_IDEA[1]:=U_key.Key_IDEA[1] xor pl;:=copy(S_key, 72,8);:= StrToInt($+buffer);_key.Key_IDEA[2]:=U_key.Key_IDEA[2] xor pl;:=copy(S_key, 80,8);:= StrToInt($