Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые обзорные » Електронно-цифровий підпис за методом Шнорр

Реферат Електронно-цифровий підпис за методом Шнорр





fy"> {//ф-ція розкладання на множники, але тільки вона 2 множітеля__int64 d, temp, x [2], y [2], c;

{= ((rand () <<16) | rand ())% (Mod-1);// вибираючи випадкове з

} while (! c);

{[0] = ((rand () <<16) | rand ())% (Mod-1);// і випадкове х для початку алгоритму

} while (! x [0]); [0] = x [0];

{[1] = Sravn (x [0], c, Mod);// на кожній ітерації х_i = f (x_ (i-1)) [0] = x [1];// f (x ) - це і є ф-ція Sravn () [1] = Sravn (y [0], c, Mod);// а y_i = f (f (y_ (i-1))) [1] = Sravn ( y [1], c, Mod); [0] = y [1]; (x [1]> y [1]) = x [1] - y [1]; = y [1] - x [ 1]; = NOD (Mod, temp);// п оалгорітму треба назодіть НСД різниці х і у поточних (d == Mod)// це якщо Mod - простое1;

} while (d == 1); = d; = Mod/P; 0;

}

void GetQ (unsigned int P, unsigned int & q)

{int p1, p2;// знаючи Р, знаходимо для нього q, таке що q | Р-1Err;

{= Factor (P, p1, p2);// на кожній ітерації факторізіруем число = (p1> p2)? p1: p2;// і вибираємо найбільше з результатів

} while (! Err);// до тих пір поки не отримаємо просте = P;// його і приймаємо за q

}

void GenOpenParam (unsigned int & P, unsigned int & q, unsigned int & b)

{int temp;

{

{= (rand () <<16) | rand ();// снчала знаходимо просто просте число

} while (NoPrime (P)); * = 2, P + = 1;// потім за умовою сильного протсо

} while (NoPrime (P)); (P, q); (b = P-1; b> = 1; b-)// а бету знаходимо методом перебору

{(b, q, temp, P); (temp == 1);

}

}

void GetKeysA (unsigned int P, unsigned int q, unsigned int b, unsigned int & a, unsigned int & v)

{//генерація ключів для А-абонентаint temp;

{= (rand () <<16) | rand ();

} while (! a); (b, a, temp, P); (P, temp, v);

}

void Sign (unsigned int P, unsigned int q, unsigned int b, unsigned int a, FILE * File, unsigned int & e, unsigned int & y)

{//ф-ція подпісиваніяint r, x; __int64 temp; char * S; FileLen;

{= (rand () <<16) | rand ();

} while (! r); (b, r, x, P); (File, 0, SEEK_END);// ставимо покажчик у кінець файлу = ftell (File);// знаходимо його позицію в байтах (таким чином і довжину самого файлу) (File, 0, SEEK_SET);// і повертаємося назад в початок = new unsigned char [FileLen + 4];/​​/ 4 доп байта для слеіванія рядки з x (S +4, sizeof (unsigned char ), FileLen, File); [0] = (x>> 3 * 8) & 0xff;// ось ттакім чином склеюємо рядок зі значенням x [1] = (x>> 2 * 8) & ; 0xff; [2] = (x>> 1 * 8) & 0xff; [3] = (x>> 0 * 8) & 0xff; = CRC32Count (S, (FileLen +4)) ;// і знаходимо хеш функцію від неї = a * e;% = q; + = r;% = q; = temp; [] S;

}

bool CheckSign (unsigned int P, unsigned int b, unsigned int v, unsigned int e, unsigned int y, FILE * File)

{//майже те ж, що і при подпісиваніі__int64 temp; int Rez1, Rez2, z, FileLen, e1; char * S; (b, y, Re...


Назад | сторінка 10 з 11 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Електронно-цифровий підпис як засіб захисту електронного документа
  • Реферат на тему: Електронно-цифровий підпис як засіб захисту електронного документа
  • Реферат на тему: Поняття та використання Network File System
  • Реферат на тему: Цифровий підпис
  • Реферат на тему: Електронний цифровий підпис