Функция шифрования
This commit is contained in:
parent
533089aea1
commit
2c3625c389
46
main.c
46
main.c
|
@ -156,6 +156,31 @@ void gen_round_keys(uint8_t* key, chunk* round_keys)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Функция шифрования
|
||||||
|
// Поддерживает запись результата в исходный массив
|
||||||
|
void kuznechik_encrypt(chunk *round_keys, chunk in, chunk out)
|
||||||
|
{
|
||||||
|
chunk p;
|
||||||
|
// Создадим копию входных данных
|
||||||
|
memcpy(p, in, sizeof(chunk));
|
||||||
|
// В течении 10 итераций
|
||||||
|
for (int i = 0; i < 10; i++)
|
||||||
|
{
|
||||||
|
// Преобразование X
|
||||||
|
X(p, round_keys[i], p);
|
||||||
|
// Для всех итераций кроме последней
|
||||||
|
if (i < 9)
|
||||||
|
{
|
||||||
|
// Преобразование S
|
||||||
|
S(p);
|
||||||
|
// Преобразование L
|
||||||
|
L((uint8_t*)&p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Копируем полученный результат
|
||||||
|
memcpy(out, p, sizeof(chunk));
|
||||||
|
}
|
||||||
|
|
||||||
// Печать чанка
|
// Печать чанка
|
||||||
void print_chunk(chunk p)
|
void print_chunk(chunk p)
|
||||||
{
|
{
|
||||||
|
@ -188,6 +213,27 @@ int main(int argc, char *argv[])
|
||||||
for (i = 0; i < 10; i++)
|
for (i = 0; i < 10; i++)
|
||||||
print_chunk(round_keys[i]);
|
print_chunk(round_keys[i]);
|
||||||
|
|
||||||
|
// Открытые данные
|
||||||
|
uint8_t data[KUZNECHIK_BLOCK_SIZE] = {
|
||||||
|
0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x00,
|
||||||
|
0xff,0xee,0xdd,0xcc,0xbb,0xaa,0x99,0x88
|
||||||
|
};
|
||||||
|
|
||||||
|
// Вывод открытых данных
|
||||||
|
printf("Открытые данные:\n");
|
||||||
|
// (void*) для избежания предупреждений о неверном типе, передаваемом в функцию
|
||||||
|
print_chunk((void*)data);
|
||||||
|
|
||||||
|
// Зашифрованные данные
|
||||||
|
chunk encrypted;
|
||||||
|
|
||||||
|
// Шифрование
|
||||||
|
// (void*) для избежания предупреждений о неверном типе, передаваемом в функцию
|
||||||
|
kuznechik_encrypt(round_keys, (void*)data, encrypted);
|
||||||
|
|
||||||
|
// Вывод зашифрованных данных
|
||||||
|
printf("Зашифрованные данные:\n");
|
||||||
|
print_chunk(encrypted);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
Loading…
Reference in New Issue