Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
key_init = 1;
return;
}
Функция symple_replace_crypt
Операцию шифрования в режиме простой замены ГОСТ 28147-89 выполняет функция symple_replace_crypt(). Функция имеет следующий вид:
void symple_replace_crypt()
{
int i,n;
В соответствии с алгоритмом ГОСТ 28147-89 выполняем 31 цикл преобразования:
for(n=1;n<=3;n++) {
for(i=0;i<=7;i++) op(i);
}
for(i=7;i>=1;i--) op(i);
32-й цикл несколько отличается от остальных, распишем его отдельно:
SM1=nac.lg.N1+X[0];
SM2=block(SM1,keys.key_d,nac.lg.N2);
nac.lg.N2=SM2;
return;
}
В функции op() реализованы циклы преобразования:
void op(int i)
{
Суммируем значение накопителя N1 и 4-х байтового вектора X[i] в сумматоре SM1:
SM1 = nac.lg.N1+X[i];
Получаем результат из блока подстановки:
SM2 = block(SM1,keys.key_d,nac.lg.N2);
nac.lg.N2 = nac.lg.N1;
nac.lg.N1 = SM2;
return;
}
Функция block
В функции block объединены блок подстановки (главный структурный элемент алгоритма) и регистр сдвига. В целях повышения скорости работы данная функция реализована на языке assembler.
__u32 block(__u32 SM1, char *k, __u32 N2)
{
__u32 SM2;
__asm__ __volatile__ (
" cld "
" pushl %%edx "
" xorl %%ecx,%%ecx "
" xorl %%edx,%%edx "