Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Проверяем значение флагов flag и key_enable. Если оба этих флага установлены, приступаем к выполнению операции криптографического преобразования блока данных:
if ((flag && key_enable)) {
Все дальнейшие операции выполняются в соответствии с алгоритмом ГОСТ 28147-89, режим гаммирования.
Если ключи не инициализированы, выполним их инициализацию:
if (key_init == 0) init_key();
Суммируем значение накопителя N4 и константы C1 по модулю (232-1):
__asm__ __volatile__(
" addl %3,%%eax "
" jnc 1f "
" incl %%eax "
"1: cmpl %2,%%eax "
" jnz 2f "
" xorl %%eax,%%eax "
"2:"
:"=a"(N4)
:"0"(N4),"b"(ULONG_MAX),"d"(C1));
Суммируем значение накопителя N3 и константы C2 по модулю 232:
N3 += C2;
Приравниваем значения накопителей:
nac.lg.N1 = N3;
nac.lg.N2 = N4;
Шифруем содержимое накопителей N1 и N2 в режиме простой замены алгоритма ГОСТ 28147-89:
symple_replace_crypt();
Выполняем операцию криптографического преобразования блока данных и возвращаем МВ размер блока данных:
for(i=0;i<=7;i++) block[i]^=nac.N[i];
return count;
}
Если ключи не введены (флаг key_enable сброшен), или установлен флаг завершения операции криптопреобразования (flag == E_STOP), сбрасываем флаг инициализации ключей и возвращаем нулевое значение модулю МВ:
key_init = 0;
return (0);
}
Функция init_key
Функция init_key() выполняет инициализацию ключей (в соответствии с алгоритмом ГОСТ 28147-89):
void init_key()
{
Поместим в накопители N1 и N2 значение синхропосылки:
memset(&nac,0,sizeof(nac));
memcpy(nac.N,keys.sp,8);
Шифруем содержимое накопителей N1 и N2 в режиме простой замены алгоритма ГОСТ 28147-89:
symple_replace_crypt();
Приравниваем значение накопителей:
N3=nac.lg.N1;
N4=nac.lg.N2;
Поднимаем флаг инициализации ключей и возвращаемся из функции: