- •Індивідуальне завдання
- •Анотація
- •Розробка криптопротоколу
- •Узагальнений опис криптопротоколу
- •Алгоритм блокового шифрування rc6
- •Алгоритм формування підключів
- •Алгоритм зашифрування даних
- •Розробка детального алгоритму реалізації криптопротоколу
- •Аналіз криптопротоколу
- •Постулати і правила ban-логіки
- •Аналіз криптопротоколу з використанням ban-логіки
- •РoЗробка структури спеціалізованого процесора
- •Визначення набору функцій, що реалізує спеціалізований процесор
- •Розробка структурної схеми спеціалізованого процесора
- •Визначення технічних характеристик спеціалізованого процесора
- •Розробка програми
- •Розробка структури програми
- •Результати тестування програми
- •Висновки
- •Список використаних джерел
- •Функція зашифрування
- •Функція розшифрування
- •Функція зняття мітки часу
Список використаних джерел
-
Бабаш А.В., Шанкин Г.П. Криптография. Под ред. В.П. Шерстюка, Э.А. Применко/ А.В. Бабаш, Г.П. Шанкин. - М.: СОЛОН-Р, 2002. - 512 с.
-
Алферов А.П., Зубов А.Ю., Кузьмин А.С., Черемушкин А.В. Основы криптографии. Учебное пособие. - М.: Гелиос АРВ, 2001. - 480 с.
-
Петров А.А. Компьютерная безопасность. Криптографические методы защиты. - М.: ДМК, 2000. - 448 с.
-
Лужецький В.А. Арифметичні основи цифрових автоматів. - Вінниця 2002.
-
Брассар Ж. Современная криптология. - М.: Полимед, 1999. - 354 с.
-
Нечаев В.И. Элементы криптографии. Основы теории защиты информации. - М.: Высшая школа, 1999. - 278 с.
-
Молдовян А.А., Молдовян Н.А., Советов Б.Я. Криптография. - СПб., 2000. - 218 с.
Додаток А
Функція зашифрування
void Crypt(char *mes, char *extkey, int r)
{
unsigned int A,B,C,D,T1,T2,*K=new unsigned int[2*r+2];
char *res;
buf_to_ui(mes,&A,0);
buf_to_ui(mes,&B,1);
buf_to_ui(mes,&C,2);
buf_to_ui(mes,&D,3);
for(int i=0;i<2*r+2;i++)
buf_to_ui(extkey,&K[i],i);
A=A+K[0];
C=C+K[1];
for(i=0;i<r;i++)
{
T1=ROL(T(A),5);
B=B^T1;
T2=ROL(T(C),5);
D=D^T2;
B=ROL(B,T2);
D=ROL(D,T1);
B=B+K[2*i];
D=D+K[2*i+1];
T1=D;D=C;C=B;B=A;A=T1;
}
B=B+K[0];
D=D+K[1];
char *tstr=new char[16];
ui_to_char(A, tstr);
for(i=0;i<4;i++)
res[i]=tstr[i];
ui_to_char(B, tstr);
for(i=0;i<4;i++)
res[i+4]=tstr[i];
ui_to_char(C, tstr);
for(i=0;i<4;i++)
res[i+8]=tstr[i];
ui_to_char(D, tstr);
for(i=0;i<4;i++)
res[i+12]=tstr[i];
}
Додаток Б
Функція розшифрування
void DecryptByRC6(char *mes, char *mykey, int r)
{
char *extkey=new char[(2*r+2)*4];
char *res;
ExtKey(mykey, extkey, r);
unsigned int A,B,C,D,T1,T2,*K=new unsigned int[2*r+2];
buf_to_ui(mes,&A,0);
buf_to_ui(mes,&B,1);
buf_to_ui(mes,&C,2);
buf_to_ui(mes,&D,3);
for(int i=0;i<2*r+2;i++)
buf_to_ui(extkey,&K[i],i);
B=B-K[0];
D=D-K[1];
for(i=r-1;i>=0;i--)
{
T1=D;D=A;A=B;B=C;C=T1;
D=D-K[2*i+1];
T1=ROL(T(A),5);
T1=ROL(T(C),5);
B=B-K[2*i];
D=ROR(D,T1);
B=ROR(B,T2);
D=D^T2;
B=B^T1;
}
A=A-K[0];
C=C-K[1];
char *tstr=new char[16];
ui_to_char(A, tstr);
for(i=0;i<4;i++)
res[i]=tstr[i];
ui_to_char(B, tstr);
for(i=0;i<4;i++)
res[i+4]=tstr[i];
ui_to_char(C, tstr);
for(i=0;i<4;i++)
res[i+8]=tstr[i];
ui_to_char(D, tstr);
for(i=0;i<4;i++)
res[i+12]=tstr[i];
}
Додаток В
Функція зняття мітки часу
void COneRandomSerpentDlg::OnButtonGen()
{
char mitka[22];
//ShellExecute(NULL,NULL,"TIME1.exe",NULL,NULL,SW_HIDE);
system("TIME1.exe");
FILE *f;
f= fopen("TIME.dat", "r");
fscanf(f,"%s",mitka);
fclose(f);
FILE *f3;
f3= fopen("TIME.dat", "r");
fscanf(f3,"%2d:%02d:%02d.%02d-%d.%d.%d",hour1,min1,sec1,hund1,day1,mon1,year1);
fclose(f3);
m_Edit_ARb=mitka;
SYSTEMTIME st1;
GetLocalTime(&st1);
qwe=st1.wSecond;
qwe1=st1.wMinute;
UpdateData(00);
m_CBut_Generate.EnableWindow(0);
m_CBut_MakeMessage.EnableWindow();
}