водиться генерація випадкових простих ключових параметрів. При введенні 2 генерує параметри боку А. При введенні 3 програма підписує файл, назва якого треба ввести. При введенні 4 програма виконує перевірку підпису файлу, для якого ця підпис генерировалась при введенні 3. Для цього потрібно знову ввести назву того ж файлу і на екрані відобразиться результат перевірки: Sign is WRONG!! підпис не пройшла перевірку і Sign is OK! якщо підпис вірна.
Перелік посилань
1. Шнайер Б. Прикладна криптографія. Протоколи, алгоритми, вихідні тексти на мові Сі - М.: Тріумф, 2002. - С. 296-300. - 816 с.
2. Горбенко І.Д., Гріненко Т.О. Захист інформації в інформаційно-телекомунікаційніх системах: Навчальний посібник. Частина 1: Кріптографічній захист інформації) - Харків. ХНУРЕ, 2004. - 376 с.
3. ДСТУ 3008-95 В«Звіти У сфері НАУКИ І ТЕХНІКИ. Структура та правила оформлення В».
4. ГОСТ 19.701 - 90. ЕСПД. Схеми алгоритмів, програм, даних і систем. Умовні позначення і правила виконання.
Додаток А
// ЕЦП Шнорр
# include
# include
# include
# include В«CRC32.hВ»
# pragma comment (lib, В«CRC32.libВ»)
# define MFILE В«general.keyВ»// файли для параметрів, ключів і підписи будуть стандартними
# define AFILE В«personal.keyВ»
# define SFILE В«sign.keyВ»
using namespace std; Power (unsigned int X, unsigned int Pow, unsigned int & Y, unsigned int Mod)// ф-ція побітового зведення в ступінь по модулю.
{i; __int64 time; (Pow == 0)// якщо степнь 0, то результат == 1
{= 1;;
} if (Pow == 1)// якщо степнь 1, то результат без змін
{= X% Mod;;
} = X% Mod; (i = 31;! (Pow & (1 < = 0; i-);// в такому циклі знаходимо самий старгій еденічние біт-;// і беремо наступний, тому що за алгоритмом з нього треба начтінать (; i> = 0; i-)
{= Y; * = time;// на кожній ітерації зводимо результат в квадрат = time% Mod; (Pow & (1 <
{= Y; * = X; = time% Mod;
}
}
} NoPrime (unsigned int Ch)// ф-ція Рабіна-Міллера перевірки числа на проостоту
{int rez, a, pow_2 (0), coef (Ch-1); ((Ch == 2) | | (Ch == 3) | | (Ch == 5) | | (Ch == 7) | | (Ch == 11)) 0; ...