Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прикла д_КР.doc
Скачиваний:
13
Добавлен:
25.11.2018
Размер:
1.58 Mб
Скачать

Список використаних джерел

  1. Бабаш А.В., Шанкин Г.П. Криптография. Под ред. В.П. Шерстюка, Э.А. Применко/ А.В. Бабаш, Г.П. Шанкин. - М.: СОЛОН-Р, 2002. - 512 с.

  2. Алферов А.П., Зубов А.Ю., Кузьмин А.С., Черемушкин А.В. Основы криптографии. Учебное пособие. - М.: Гелиос АРВ, 2001. - 480 с.

  3. Петров А.А. Компьютерная безопасность. Криптографические методы защиты. - М.: ДМК, 2000. - 448 с.

  4. Лужецький В.А. Арифметичні основи цифрових автоматів. - Вінниця 2002.

  5. Брассар Ж. Современная криптология. - М.: Полимед, 1999. - 354 с.

  6. Нечаев В.И. Элементы криптографии. Основы теории защиты информации. - М.: Высшая школа, 1999. - 278 с.

  7. Молдовян А.А., Молдовян Н.А., Советов Б.Я. Криптография. - СПб., 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();

}

30