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
Функция
Описание
1
2
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
1
2
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()
Объявлена в заголовочном файле.
Функция, в которой происходит определение
размера ключа, а также параметры файлов
ввод-вывода данных и результатов.
Так же вызывает функции шифрования и
расшифрования
текста
Do'stlaringiz bilan baham: