Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.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;

Поднимаем флаг инициализации ключей и возвращаемся из функции:


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100