Теоретическая часть криптографической защиты файлов. 1 Задачи криптографии



бет22/22
Дата13.09.2022
өлшемі24,25 Mb.
#38984
түріКнига
1   ...   14   15   16   17   18   19   20   21   22
Байланысты:
Разработка программного средства обеспечивающего криптографическую защиту файло... - StudentLib.com



.4 Выводы по главе




В приведенных примерах показано, что программа имеет информативные пользовательские окна авторизации, создания USB-ключа и основного окна и выполняет функции шифрования-расшифрования файлов или файловых контейнеров, обеспечивая двухэтапную аутентификацию. Программа имеет интуитивно-понятный интерфейс, систему подсказок пользователю в реальном времени. Программа работает стабильно в операционной системе Windows XP и Windows Seven.
Заключение


В данной работе был проведен обзор и анализ методов и средств криптографической защиты файлов; были проведены алгоритмическое и программное конструирование демонстрирующие непосредственные алгоритмы и схемы работы с файлами и их программная реализация на ЭВМ.
Задачей проведенного исследования была разработка программного средства криптографической защиты файлов.
В данной работе было выполнено:
- разработана двухуровневая система аутентификации пользователя;
- интегрированы последние научные разработки алгоритмов аутентификации и контроля целостности;
- применены криптографически стойкие алгоритмы шифрования;
- создан дружественный и интуитивно понятный пользователю интерфейс.
Данная программа может быть использована как домашними пользователями ПК, так и в среде мелких и средних предприятий, а также в любой фирме, которой необходим функционал данной программы.
В данной практике создана программа, удовлетворяющая заданию. Итоговая программа проверена и функционирует под операционными системами Windows XP и Windows seven 32bit. Программа отслеживает корректность USB-ключа: в случае подмены, взлома или устаревания, штатная работа по шифрованию-расшифрованию файлов становится невозможной. А благодаря использованию стойкой пары логин-пароль, обеспечивается дополнительная защита, в случае, если злоумышленник завладеет USB-ключом. Все внутренние вычисления и проверки целостности и аутентификации выполняются по криптостойким алгоритмам - SHA-512 и CRC64.
Одним из преимуществ данной программы является легкость ее использования благодаря интуитивно понятному интерфейсу и системе подсказок пользователю в реальном времени.
Список источников


1. А.В. Аграновский, Р.А. Хади, «Практическая криптография: алгоритмы и их программирование». - М.: СОЛОН-Пресс, 2009, 256 с.
. Тычинин Евгений Викторович «Сравнительный анализ защищенных ключевых носителей» - Журнал «Директор по безопасности», Август 2010, [Электронный ресурс] - URL: http://secandsafe.ru/stati/zaschita_informacii/sravnitelnyy_analiz_zaschischennyh_klyuchevyh_nositeley (дата обращения: 1.07.2012).
3. ФБР не смогли расшифровать файлы Даниеля Дантеса. Truecrypt. [Электронный ресурс] - URL: (дата обращения: 1.07.2012).
. С. Баричев, «Криптография без секретов» [Электронный ресурс] - URL: (дата обращения: 1.07.2012).
5. Recommendation for Block Cipher Modes of Operation. NIST Special Publication 800-38A. Technology Administration U.S.Department of Commerce. 2001 Edition
. Олег Зензин, «Режимы шифрования» [Электронный ресурс] - URL: (дата обращения: 1.07.2012).
. Андрей Винокуров «Проблема аутентификации данных и блочные шифры» [Электронный ресурс] - URL: (дата обращения: 1.07.2012).
. М.И. Анохин, Н.П. Варновский, В.М. Сидельников, В.В. Ященко, «Криптография в банковском деле» [Электронный ресурс] - URL: (дата обращения: 1.07.2012).
. Панасенко С.П. «Алгоритмы шифрования. Специальный справочник» - Спб.: БХВ-Петербург, 2009. - 576.
. Фергюсон Н., Шнайер Б. «Практическая криптография» - М.: Издательский дом «Вильямс», 2005. - 424.
. «Сеть Фейстеля». [Электронный ресурс] - URL: (дата обращения: 1.07.2012).
. Чиликов А., Алексеев Е. «Поиск криптографических ключей в RAM» [Электронный ресурс] - URL: (дата обращения: 1.07.2012).
13. Schneier B., Kelsey J., Whiting D., Wagner D., Hall C., Ferguson N. Twofish: A 128-bit Block Cipher. // http://www.schneier.com/ - 15 June 1998.
14. Амербаев В.М., Зверев Е.М., Шарамок А.В. «О методе построения программно-физического датчика случайных чисел» - ГУП НПЦ «Спурт», г. Москва, г. Зеленоград.
. «PGP» [Электронный ресурс] - URL: (дата обращения: 1.07.2012).
. «TrueCrypt» [Электронный ресурс] - URL: (дата обращения: 1.07.2012).
Приложение А


ТЕХНИЧЕСКОЕ ЗАДАНИЕ НА ПРОГРАММНОЕ СРЕДСТВО
СОГЛАСОВАНО УТВЕРЖДЕНО
Ст. преподаватель каф. «ПОВТ и АС» Зав. каф. «ПОВТ и АС»__ С.П. Новиков __Р.А. Нейдорф
«____»_____2012 г. «____»____2012 г.
П.А.1 Введение
П.A 1.1 Наименование программы
Наименование программы - «Yoda».
Областью применения данного продукта может быть сфера защиты информации.
Конечный программный продукт предназначен для внедрения на кафедру «Программного обеспечения вычислительной техники и автоматизированных систем» («ПОВТиАС») Донского Государственного Технического Университета (ДГТУ).
П.А.2 Основание для разработки
Разработка ведется на основании документа «Учебный план для студентов ВУЗа», факультета «Информатика и вычислительная техника», обучающихся по специальности 090102 «Компьютерная безопасность», в соответствии с которым студенты, заканчивающие ВУЗ, должны предоставить к защите работу, выполненную в ходе разработки дипломной работы. Предметным основанием является задание на дипломную работу.
П.А.3 Назначение разработки
Функциональное назначение ПС состоит в шифровании файлов и файловых контейнеров, организация двухэтапной аутентификации пользователя.
Эксплуатационное назначение - использование в качестве спец ПО на компьютерах конечных пользователей.
П.А.4 Требование к программе
П.А.4.1 Требования к функциональным характеристикам
ПС должно выполнять шифрование данных, аутентификацию пользователя по паре логин-пароль и USB-ключу, целостность ключа и шифруемых данных.
Выполняемая функциональность разработанным программным средством:
- шифрование/расшифровка данных;
- двухэтапная аутентификация пользователя;
- создание USB-ключа для шифрования/расшифровки данных;
- контроль целостности USB-ключа и шифруемых данных;
- защита USB-ключа от подмены;
- контроль временной ценности USB-ключа;
- противодействие попытке взлома USB-ключа.
П.А.4.2 Требования к надежности
Требования к обеспечению надежного функционирования программы: Надежное функционирование программы должно быть обеспечено выполнением Заказчиком совокупности организационно-технических мероприятий, перечень которых приведен ниже:
- организацией бесперебойного питания технических средств;
- организацией правильного использования сетевых модулей;
- организацией правильного ввода параметров инициализирующих структур;
- регулярным выполнением требований ГОСТ 51188-98. Защита информации. Испытания программных средств на наличие компьютерных вирусов.
Отказы из-за некорректных действий пользователей системы.
Отказы программы вследствие некорректных действий программиста при взаимодействии с программным пакетом сопровождаются отрицательными возвращаемыми значениями всех функций модуля.
П. 4.2.1. Организация входных и выходных данных
П.4.2.1.1 Входные данные
- пара логин-пароль текстовом виде и USB-ключ (для получения доступа к программе);
- файл/папка с файлами для шифрования;
- файл/контейнер для расшифровки.
П.4.2.1.2 Выходные данные
- файл/папка с файлами для шифрования;
- файл/контейнер для расшифровки.
П.А.4.3 Условия эксплуатации
Для функционирования программного продукта необходимо соблюдение всех требований и правил эксплуатации компьютерной техники. Дополнительных требований и ограничений не вводится.
Требования к персоналу, работающему с данным программным продуктом: общие знания вычислительной техники, умения работы с сетью и знание предметной области и стандартного пользовательского интерфейса операционной системы.
П.А.4.4 Требования к составу и параметрам технических средств
В состав технических средств должен входить IВМ-совместимый персональный компьютер (ПЭВМ), включающий в себя:
- процессор Pentium-2.0GHz, не менее или процессор Intel или AMD с тактовой частотой не ниже 2.0GHz;
- оперативную память объемом не менее 1024 Мбайт;
- операционную систему семейства Windows;
- VGA-совместимый видеоадаптер и дисплей;
- клавиатура и мышь.
П.А.4.4.1. Условия эксплуатации технических средств
Для функционирования программного продукта необходимо соблюдение всех требований и правил эксплуатации компьютерной техники. Дополнительных требований и ограничений не вводится.
Программа обслуживается системным администратором, имеющим сведения о работе с сетью и знание предметной области. Требования к персоналу, работающему с данным программным продуктом: общие знания вычислительной техники и стандартного пользовательского интерфейса операционной системы, умения работы с сетью и знание предметной области.
Для корректного функционирования программного продукта необходима операционная система платформы Microsoft Windows XP, Microsoft Windows Vista или Windows 7, а также наличие программного пакета Microsoft Office 2003/2007 или OpenOffice.
П.А.4.5 Требования к исходным кодам и языкам программирования.
Среда разработки Borland Delphi 7 или выше.
П.A. 4.6 Требование к упаковке и маркировке
Программное средство должно сопровождаться руководством пользователя. Требования к маркировке не предъявляются, но упаковывать желательно в «контейнеры», создающие максимальную защиту носителей, на которых хранится и переносится программное средство.
П.А.4.7 Требования к транспортировке и хранению
Условия транспортирования, места хранения, условия складирования и сроки хранения в различных условиях должны соответствовать требованиям, предъявляемым к носителям информации на которых будет содержаться данное программное изделие. Программа может храниться на жестком диске, на Flash-носителе, на компакт-дисках.
П.A.5 Требование к программной документации
Предварительный состав необходимой программной документации, выполненной на русском языке в соответствии с требованиями ЕСПД согласно ГОСТ 19.201-78, 19.503-79, 19.504-79, 19.505-79:
Техническое задание по ГОСТ 19.201-78 ЕСПД. «Техническое задание. Требования к содержанию и оформлению».
П.A.6 Стадии и этапы разработки
Системный анализ (с 15.03.2012 по 20.05.2012):
- изучение предметной области (дистанционное обучение, язык программирования Object Pascal);
- определение области применения и целей использования разрабатываемого программного средства;
- поиск вариантов решения поставленных задач;
- определение ограничений и диапазонов функционирования разрабатываемого программного средства;
- подготовка технического задания.
Этап 1. Общесистемное проектирование (с 21.05.2012 по 10.06.2012):
- определение структуры программного комплекса;
- определение структуры алгоритмов и модулей.
Этап 2. Подготовка технологических средств (11.06.2012-20.06.2012):
- выбор языка программирования;
- выбор и подготовка инструментальных средств, (средств трансляции) и средств отладки;
- разработка инструкций к применению методов.
Этап 3. Программная реализация, рабочий проект (с 20.06.2011 по 15.09.2011):
- разработка алгоритмической части;
- разработка текстов программных модулей;
- разработка документации;
- проектирование пользовательского интерфейса.
Этап 4. Отладка программного средства в статике (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('$'+buffer);_key.Key_IDEA[3]:=U_key.Key_IDEA[3] xor pl;:=copy(S_key, 88,8);:= StrToInt('$'+buffer);_key.Key_IDEA[4]:=U_key.Key_IDEA[4] xor pl;
////
// 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);
////:=copy(S_key, 96,8);:= StrToInt('$'+buffer);_key.Key_CONST[1]:=U_key.Key_CONST[1] xor pl;:=copy(S_key, 104,8);:= StrToInt('$'+buffer);_key.Key_CONST[2]:=U_key.Key_CONST[2] xor pl;:=copy(S_key, 112,8);:= StrToInt('$'+buffer);_key.Key_CONST[3]:=U_key.Key_CONST[3] xor pl;:=copy(S_key, 120, 8);:= StrToInt('$'+buffer);_key.Key_CONST[4]:=U_key.Key_CONST[4] xor pl;
// первый блок ключа успешно зашифрован! Мы молодцы!
////////////
//получаем дату
data_:=Date;
DecodeDate(data_, y, m, day);day<10 then str:= str + '0' + inttostr(day);m<10 then str:= str + '0' + inttostr(m);:= str + inttostr(y);_key.data_key:= strtoint(str);
// шифруем вторую часть ключа
// MessageDlg(inttostr(U_key.CRC64_2) , mtWarning, [mbOK],0);:=copy(lite_key, 1,8);:= StrToInt('$'+buffer);_key.CRC64_2:= U_key.CRC64_2 xor pl;:=copy(lite_key, 8,8);:= StrToInt('$'+buffer);_key.Key_counter:=U_key.Key_counter xor pl;:=copy(lite_key, 16,8);:= StrToInt('$'+buffer);_key.data_key :=U_key.data_key xor pl;
//считаем CRC64 от 1 и 2 части ключа уже зашифрованных:
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]);:= buffer + inttostr(U_key.CRC64_2);:= buffer + inttostr(U_key.Key_counter);:= buffer + inttostr(U_key.data_key);_key.CRC64_1:= CRC64_sum(buffer);
//создаем USB-ключ_key.Control_hash:= Control_hash;_key.Familiy:= Form3.Edit1.Text;_key.Name:= Form3.Edit2.Text;
//проверка:
{ 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);('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);('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);('CRC2 ' + inttostr(U_key.CRC64_2), mtWarning, [mbOK],0);('Счетчик ' + inttostr(U_key.Key_counter) , mtInformation, [mbOK],0);('Дата ' + inttostr(U_key.data_key) , mtInformation, [mbOK],0);('Control_hash ' + Control_hash , mtInformation, [mbOK],0);('FAM ' + U_key.Familiy , mtInformation, [mbOK],0);('Name ' + U_key.Name , mtInformation, [mbOK],0);('CRC1 ' + inttostr(U_key.CRC64_1) , mtInformation, [mbOK],0);
}(fkey, Form3.drivecombobox1.Drive + ':\qwallke.qwkey');(fkey);(fkey, U_key);(fkey);(Form3.drivecombobox1.Drive + ':\qwallke.qwkey', faHidden);
//делаем его невидимым('USB-ключ успешно создан!' , mtInformation, [mbOK],0);.Timer1.Enabled:=true;.Show;.Hide;;
{===============}TForm3.Button1Click(Sender: TObject);: byte;:=0;(Length(Edit1.Text)<7) then MessageDlg('Поле ввода "Фамилия" не может быть меньше 7 символов!', mtWarning, [mbOK],0)if (Length(Edit2.Text)<2) then MessageDlg('Поле ввода "Имя" не может быть меньше 2 символов!', mtWarning, [mbOK],0)if (Length(Edit5.Text)<8) then MessageDlg('Поле ввода "Пароль доступа" не может быть меньше 8 символов!', mtWarning, [mbOK],0)if (Length(Edit4.Text)<8) then MessageDlg('Поле ввода "Подтвердите пароль" не может быть меньше 8 символов!', mtWarning, [mbOK],0)if (Length(Edit3.Text)<5) then MessageDlg('Поле ввода "Логин" не может быть меньше 5 символов!', mtWarning, [mbOK],0)if (Edit5.Text <> Edit4.Text) then MessageDlg('Подтверждение пароля неверно! Повторите попытку', mtWarning, [mbOK],0)
else new_yserkey;
end;
{==================================}
//перехватываем закрытие формы и закрываем прогу
Procedure TForm3.WMGetSysCommand(var Message : TMessage) ;: integer;code=0 then begin(Message.wParam = SC_MINIMIZE)Form1.Visible:=False;(Message.wParam = SC_CLOSE)begin.Terminate; endInherited;;(Message.wParam = SC_CLOSE) and (code=1)Form3.Hide;;
{======================================}TForm3.Edit4Change(Sender: TObject);, h: string;,k: integer;:=edit4.Text;:=0;i:=1 to length(str) do begin(copy(str, i,1)>'A') and (copy(str, i,1)<'Z') then inc(k);(copy(str, i,1)>'0') and (copy(str, i,1)<'9') then inc(k);;length(str)>7 then begin
//PostMessage(ProgressBar1.Handle, $0409, 0, clRed);
//newuser:=true;.Position:=length(str) + k;
//GroupBox3.Enabled:=true;;;TForm3.DriveComboBox1Change(Sender: TObject);: dword;, FSName : array [0..255] of char;,: dword;: boolean;(PChar(drivecombobox1.Drive + ':\'),, SizeOf(VolumeName),
@SerialNum,,,, SizeOf(FSName));.Caption:= 'Имя диска: ' + VolumeName;_numdisk:=SerialNum;//узнаем id USB:=FileExists(PChar(drivecombobox1.Drive + ':\' + 'qwallke.qwkey'));FileEx=true then begin.Caption:='Этот USB уже является ключом!';edit4.text<>'' then label11.Visible:=true;.Font.Color:=clRed;.Enabled:=false endbegin.Font.Color:=clBlack;.Enabled:=true;;;
{=============================}TForm3.FormCreate(Sender: TObject);: integer;: uInt;
//newuser:=false;
{оставляем только сменные носители}
i := 0;i <= Form3.DriveComboBox1.Items.Count - 1 do:= GetDriveType (PChar(Form3.DriveComboBox1.Items[i][1] + ':\'));(DriveType<> Drive_Removable) then.DriveComboBox1.Items.Delete(i)(i);;.button1.Enabled:=false;;TForm3.Image1Click(Sender: TObject);
MessageDlg('В этом окне вы можете создать USB-ключ. Он понадобится Вам для шифрования и расшифрования файлов и файловых контейнеров. Заполните все поля. ВНИМАНИЕ: запомните введенные ЛОГИН и ПАРОЛЬ - они понадобятся для входа в систему. <мастер Йода>', mtInformation, [mbOK],0);;.

Достарыңызбен бөлісу:
1   ...   14   15   16   17   18   19   20   21   22




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет