crptstream); ( keystream); (datastream); ();
return 0;
}
// ---------- Функція зчитування даних з файлу з доповненням --------------------
void ADDFILE (FILE * flow, short ost, DWord MES [2]) {times; (int i = 0; i <2; i + +) [i] = 0x0; = (short) floor ((double) ost/4); (times == 1) {(part, 4,1, flow); ES [0] = * (DWord *) (part);
} (ost% 4! = 0) {(part, ost% 4,1, flow); (int s = ost% 4; s <4; s + +) [s] = NULL; [times] = * (DWord *) (part);
}
fseek (flow, 0, SEEK_SET);
}
// ------------------- Функція визначення довжини файлу ----------------- ---
DWord FILESIZE (FILE * flow) {size; (flow, 0, SEEK_END); = ftell (flow); (flow, 0, SEEK_SET); size;
}
// -------------------- Функція різниці двох 512 бітових чисел --------------
void DICRIMENT (Word P [32], Word Q [32], Word RES [32]) {CUR_RES [32] = {0x0,}; ZAEM = 0x0; (int e = 0; e <32; e + +) {(P [e]
} {_RES [e] = P [e]-Q [e]-ZAEM; = 0x0;
}
} (e = 0; e <32; e + +) [e] = CUR_RES [e];
}
// ------------------- Функція множення двох 256 бітових чисел ---------------
void MULTIPLE (Word Mn1 [16], Word Mn2 [16], Word RES [32], Word R) {_ptr.BL32 = 0; BUF = 0x0; Previece_ST_part = 0, Current_ML_part = 0 ; CUR_RES [32] = {0x0,}; (int j = 0; j <16; j + +) {(int i = 0; i <16; i + +) {(i == 0) {_RES [15 + j] = Previece_ST_part; _ST_part = 0;
}
} (int e = 0; e
}
// ----------------------- Функція обчислення 256 бітового модуля 512 бітового числа --------- ------
void TAKE_MODULE (Word NUMBER [32], Word OST [16], Word MOD [16]) {ii = 31, jj = 15; K [16] = {0x0,}, CUR_MOD [ 32], CUR_NUM [32]; (int
} (CUR_NUM, CUR_MOD, CUR_NUM);
} {[ii-jj] = CUR_NUM [ii]/MOD [jj]; (K, MOD, CUR_MOD, 32); (CUR_NUM, CUR_MOD, CUR_NUM);
}
} (i = ii; i> = ii-14; i -) {_MOD [i] = CUR_MOD [i-15]; _MOD [i-15] = 0x0;
} (CUR_NUM, CUR_MOD, CUR_NUM);
}
};
} (CUR_NUM [ii] == 0x0) {(ii == 0); -;
} (i = 15; i> = 0; i -) [i] = 0x0;
} (i = 15; i> = 0; i -) [i] = CUR_NUM [i];
}
// --------------------- Функція обчислення 256 бітового модуля ступеня 2...