Проектирование и разработка информационных систем


Приложение 1. Модульные диаграммы, диаграмма последовательности



Download 2,21 Mb.
Pdf ko'rish
bet34/38
Sana24.02.2022
Hajmi2,21 Mb.
#242470
TuriРеферат
1   ...   30   31   32   33   34   35   36   37   38
Bog'liq
programm

Приложение 1. Модульные диаграммы, диаграмма последовательности 


116 


117 


118 


119 


120 
Приложение 2. Описание основных функций 
Описание main.c 
switch(index_crypto) 
case 0: 
test_aes(); // aes.c: шифрование/дешифрование. Для тестов 
test_des(); // des.c: шифрование/дешифрование. Для тестов 
break; 
case 1: 
test_ant_aes(); // ant_aes.c: муравьиный криптоанализ алгоритма aes. 
break; 
case 2: 
test_ant_des(); // ant_des.c: муравьиный криптоанализ алгоритма des 
break; 
case 3: 
test_gen_aes(); // gen_aes.c: генетический криптоанализ алгоритма aes 
break; 
case 4: 
test_gen_des(); // gen_des.c: генетический криптоанализ алгоритма des 
break; 
aes.c → int test_aes() 
des.c → void test_des(void) 
ops.h 
ops — original population seed 
Так как интерфейсы des и aes отличаются, а выбор при реализации был сделан в 
сторону единообразной работы, то для достижения этой цели был реализован интерфейс, 
описанный в ops.h.
Реализованный интерфейс позволяет работать с оригинальным текстом, 
зашифрованным текстом и ключом шифрования. Для определения с каким типом данных 
будет происходить работа используется 
enum ops_data_type 

OPS_DATA_CIPHER, 
OPS_DATA_TEXT, 
OPS_DATA_KEY 
}; 
В программе создана структура, описывающая операции с данными. Структура имеет 
следующий вид: 
struct ops_data 

int key_length; 
int text_length; 
int cipher_length; 
void* (*allocate)(struct ops_data *ops, enum ops_data_type type); 
void (*destroy)(struct ops_data *ops, enum ops_data_type type, void *data); 
void (*random)(struct ops_data *ops, enum ops_data_type type, void *data); 
int (*get_bit)(struct ops_data *ops, enum ops_data_type type, void *data, int n); 
void (*set_bit)(struct ops_data *ops, enum ops_data_type type, void *data, int n, int value); 
void (*print)(struct ops_data *ops, enum ops_data_type type, void *data, FILE *f); 


121 
void (*copy)(struct ops_data *ops, enum ops_data_type type, void *src, void *dst); 
void (*cipher)(struct ops_data *ops, void *text, void *key, void *cipher); 
void (*breed)(struct ops_data *ops, void *parent_key1, void *parent_key2, void *child_key); 
void (*mutate)(struct ops_data *ops, void *key, double mutation_rate); 
}; 
Данная структура содержит определенный набор параметров и функций, которые позволяют 
наиболее унифицировано обрабатывать данные.
В структуре объявлены следующие параметры, определяющие данные, с которыми будет 
происходить работа 
key_length
длина ключа: для DES — 56 бит, для AES — 128, 192, 256 
бит 
text_length
длина текста: для DES — 64 бит, для AES — 128 бит 
cipher_length 
длина шифрованного текста:
для DES — 64 бит, для AES — 128 бит 
Рассмотрим более подробно основные функции работы с данными. 
Указатель на функцию выделения памяти для данных
void* (*allocate)(struct ops_data *ops, enum ops_data_type type) 
в качестве входных данных принимает следующие параметры: 
struct ops_data *ops
указатель на объект, содержащий параметры 
заданного
шифрования 
enum ops_data_type type тип данных, для которых выделяется память 
(шифрованный текст, оригинальный текст или 
ключ). 
Функция возвращает указатель на выделенную память 
По окончании работы с данными необходимо освободить память, для чего написана 
функция освобождения памяти 
void (*destroy)(struct ops_data *ops, enum ops_data_type type, void *data); 
в качестве входных данных принимает следующие параметры: 
struct ops_data *ops
указатель на объект, содержащий параметры 
заданного
шифрования 
enum ops_data_type type тип данных, для которых была выделена память 
void *data 
указатель на память, которую надо освободить 
Для формирования данных случайным образом написана функция заполнения 
void (*random)(struct ops_data *ops, enum ops_data_type type, void *data) 
в качестве входных данных принимает следующие параметры: 
struct ops_data *ops 
указатель на объект, содержащий параметры 
заданного
шифрования 
enum ops_data_type type тип данных, с которым будет осуществляться работа 
void *data 
указатель на данные, которые будут заполнены 
случайным образом 
Функция для получения значения бита на определенной позиции в строке данных 
int (*get_bit)(struct ops_data *ops, enum ops_data_type type, void *data, int n); 
в качестве входных данных принимает следующие параметры: 
struct ops_data *ops 
указатель на объект, содержащий параметры 
заданного
шифрования 


122 
enum ops_data_type type тип данных, с которым будет осуществляться работа 
void *data
указатель на данные 
int n 
позиция бита в строке 
Возвращает значение бита в позиции n 
Функция установки значения бит в строке данных 
void (*set_bit)(struct ops_data *ops, enum ops_data_type type, void *data, int n, int value); 
в качестве входных данных принимает следующие параметры: 
struct ops_data *ops 
указатель на объект, содержащий параметры 
заданного
шифрования 
enum ops_data_type type тип данных, с которым будет осуществляться работа 
int n 
номер изменяемого бита 
int value 
значение, которое будет установлено в изменяемом 
бите 
Функция печати данных в поток ввода-вывода 
void (*print)(struct ops_data *ops, enum ops_data_type type, void *data, FILE *f); 
в качестве входных данных принимает следующие параметры: 
struct ops_data *ops 
указатель на объект, содержащий параметры 
заданного
шифрования 
enum ops_data_type type тип данных, с которым будет осуществляться работа 
void *data
данные, которые будут печататься 
FILE *f
поток ввода-вывода 
Вспомогательная функция копирования данных 
void (*copy)(struct ops_data *ops, enum ops_data_type type, void *src, void *dst); 
в качестве входных данных принимает следующие параметры: 
struct ops_data *ops 
указатель на объект, содержащий параметры 
заданного
шифрования 
enum ops_data_type type тип данных, с которым будет осуществляться работа 
void *src
указатель на источник данных 
void *dst 
указатель на приемник данных 
Функция шифрования блока данных, в которой происходит обращение к реализованным 
алгоритмам шифрования 
void (*cipher)(struct ops_data *ops, void *text, void *key, void *cipher); 
в качестве входных данных принимает следующие параметры: 
struct ops_data *ops
указатель на объект, содержащий параметры 
заданного
шифрования
enum ops_data_type type тип данных, с которым будет осуществляться работа 
void *text 
оригинальный незашифрованный текст 
void *key 
ключ 
void *cipher 
зашифрованный текст
Обращение к тому или иному алгоритму шифрования определяется вариантом, выбранным 
при запуске программы. 
Для исследования генетического алгоритма реализованы две функции необходимые для 
обеспечения работы алгоритма: 
1. Функция порождения потомка
void (*breed)(struct ops_data *ops, void *parent_key1, void *parent_key2, void *child_key); 
в качестве входных данных принимает следующие параметры: 


123 
struct ops_data *ops 
указатель на объект, содержащий параметры 
заданного
шифрования 
void *parent_key1 
указатель на ключ родителя №1 
void *parent_key2 
указатель на ключ родителя №2 
void *child_key
указатель на ключ потомка, принцип формирования 
которого будет описан ниже 
2. Функция мутации генов потомка
void (*mutate)(struct ops_data *ops, void *key, double mutation_rate); 
в качестве входных данных принимает следующие параметры: 
struct ops_data *ops 
указатель на объект, содержащий параметры 
заданного
шифрования 
void *key 
ключ 
double mutation_rate 
вероятность мутации гена (mutation_rate * 
key_length. <=1) 
Заголовочные файлы ops_aes.h и ops_des.h и соответствующие им *.с файлы содержат 
определение специфичных функций для AES и DES соответственно. 
Функции инициализация ops_data для работы с алгоритмами AES и DES: 

Download 2,21 Mb.

Do'stlaringiz bilan baham:
1   ...   30   31   32   33   34   35   36   37   38




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish