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


 Практическая реализация алгоритма AES



Download 2,21 Mb.
Pdf ko'rish
bet17/38
Sana24.02.2022
Hajmi2,21 Mb.
#242470
TuriРеферат
1   ...   13   14   15   16   17   18   19   20   ...   38
Bog'liq
programm

3.1.3 Практическая реализация алгоритма AES 
При реализации алгоритма AES были использованы материалы [28], 
[30], которые были доработаны с целью использования в представленной в 
данной работе системе криптоанализа. 
При реализации были использованы и реализованы следующие 
основные структуры, переменные: 
Структура в которой хранятся основные параметры для работы алгоритма, а 
также входные и выходные данные:
int Nr — число раундов алгоритма, 
int Nk — число 32-битных слов в ключе 
unsigned char Key[32] — исходный ключ 
unsigned char RoundKey[240] — раундовые ключи 
unsigned char in[16], out[16] — входные и выходные данные 
unsigned char state[4][4] — массив для хранения промежуточных результатов 
работы алгоритма 
Таблицы, использующиеся при шифровании, расшифровании данных 
представлены в виде статических постоянных (таблица 3.3). 


47 
Таблица 3.3 
Постоянные алгоритма AES 
Статические постоянные 
Описание 
static const int Sbox[256]
Нелинейная таблица замен, использующаяся в 
нескольких трансформациях замены байтов и в 
процедуре Key Expansion для взаимооднозначной 
замены значения байта 
static const int RSbox[256] 
Обратная таблица замен. Используется при 
расшифровании 
static const int Rcon[255] 
Массив, который состоит из битов 32-разрядного 
слова и является постоянным для данного раунда 
Основные функции, обеспечивающие работу алгоритма описаны в таблице 3.4. 
Таблица 3.4 
Функции алгоритма AES 
Функция 
Описание 


int getSBoxValue(int num) 
Функция возвращающая требуемое значение 
таблицы замен
int getSBoxInvert(int num) 
Функция возвращающая требуемое значение 
обратной таблицы замен
void 
KeyExpansion(struct 
aes_parameter 
*param) 
процедура генерации Round Keys из Cipher 
Key. Раундовые ключи используются в 
каждом раунде лакгоритма. 
void 
AddRoundKey(int 
round, 
struct 
aes_parameter *param) 
трансформация при шифровании и обратном 
шифровании, при которой применяется XOR 
Round Key и State. Длина RoundKey равна 
размеру State (то есть, если Nb = 4, то длина 
RoundKey равна 128 бит или 16 байт) 
void SubBytes(struct aes_parameter *param) 
Трансформации при шифровании, которые 
обрабатывают State используя нелинейную 
таблицу замещения байтов (Sbox), применяя 
её независимо к каждому байту State 
void InvSubBytes(struct aes_parameter *param) Трансформация при расшифровании, которая 
является 
обратной 
по 
отношению 
к 
SubBytes() 
void ShiftRows(struct aes_parameter *param) 
Трансформации при шифровании, которые 
обрабатывают State, циклически смещая 
последние три строки State на разные 
величины 


48 
Продолжение таблицы 3.4 


void InvShiftRows(struct aes_parameter *param) Трансформация при расшифровании, которая 
является 
обратной 
по 
отношению 
к 
ShiftRows() 
void MixColumns(struct aes_parameter *param) Трансформация при шифровании, которая 
берёт все столбцы State и смешивает их 
данные (независимо друг от друга), чтобы 
получить новые столбцы 
void 
InvMixColumns(struct 
aes_parameter 
*param) 
Трансформация при расшифровании, которая 
является 
обратной 
по 
отношению 
к
MixColumns() 
void Cipher(struct aes_parameter *param) 
Объявлена в заголовочном файле 
Функция формирования блоков в массив
State 
вызов 
функций 
преобразования 
информации. Основная функция шифрования 
текста. 
void InvCipher(struct aes_parameter *param) 
Объявлена в заголовочном файле 
Функция формирования блоков в массив
State 
вызов 
функций 
преобразования 
информации. 
Основная 
функция 
расшифрования текста. 
void 
aes_crypt(char 
*input_fname, 
char 
*output_fname, char *password, int key_len) 
Объявлена в заголовочном файле 
Функция чтения информации, вызов функции 
шифрования блока, запись зашифрованной 
информации 
void 
aes_decrypt(char 
*input_fname, 
char 
*output_fname, char *password, int key_len) 
Объявлена в заголовочном файле 
Функция 
чтения 
зашифрованной 
информации, вызов функции расшифрования 
блока, запись расшифрованной информации 
int test_aes() 
Объявлена в заголовочном файле. 
Функция, в которой происходит определение 
размера ключа, а также параметры файлов 
ввод-вывода данных и результатов.
Так же вызывает функции шифрования и 
расшифрования текста 

Download 2,21 Mb.

Do'stlaringiz bilan baham:
1   ...   13   14   15   16   17   18   19   20   ...   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