Курсовая работа: Программирование алгоритма цифровой подписи ГОСТ Р 34.10-94
mul(mm_a, mm_b, mm_d, mm_l_a_b_n, t);
Div(mm_d, mm_n, w1, mm_ost, mm_l_a_b_n*2, mm_l_a_b_n);}
/*c=a(exp b) mod n*/
void exp_mod(unsigned short exp_mod_a[], unsigned short exp_mod_b[], unsigned short exp_mod_n[], unsigned short exp_mod_c[], unsigned short w1[], int exp_mod_l_a_n, int exp_mod_l_b)
{unsigned short *exp_mod_c_dop;
exp_mod_c_dop=new(unsigned short[exp_mod_l_a_n]);
int e;
for(int l=1; l<=(exp_mod_l_a_n-1); l++)
{exp_mod_c[l]=0;
exp_mod_c_dop[l]=0;}
exp_mod_c_dop[0]=1;
exp_mod_c[0]=1;
for(e=(16*exp_mod_l_b-1); e>=0; e--)
{mul_mod(exp_mod_c, exp_mod_c, exp_mod_n, exp_mod_c_dop, w1, exp_mod_l_a_n, exp_mod_l_a_n);
if(exp_mod_b[e/16] & (1<<(e%16)))
{mul_mod(exp_mod_a, exp_mod_c_dop, exp_mod_n, exp_mod_c, w1, exp_mod_l_a_n, exp_mod_l_a_n);}
else
{for(int h=0; h<=exp_mod_l_a_n-1; h++)
{exp_mod_c[h]=exp_mod_c_dop[h];}}}}
/*сравнение*/
int comp (unsigned short a[], unsigned short p[], int S1)
{int x=1;
for(int i=0; i!=S1; i++)
{if (a[i]!=p[i]) x=0;}
if(x==0) return 1;
else return 0;}
/*чтение из файла*/
int file_read(unsigned short t[], long curpos, int sz)
{FILE *fp;