Блочный шифр ТЕА - Лабораторная работа

бесплатно 0
4.5 30
Разработка программы кодирования текстового файла при помощи блочного алгоритма шифрования ТЕА типа Сеть Фейштеля, который основан на битовых операциях с 64-битным блоком и имеет 128-битный ключ шифрования. Результаты кодирования и декодирования.


Аннотация к работе
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «ТИХООКЕАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Лабораторная работа №3 по дисциплине: Методы и средства защиты информации на тему: «Блочный шифр ТЕА» Выполнил: студент гр. ВМ-91 Анисимов А.В. Проверил: Сай С.В. Хабаровск, 2013г. Цель: произвести кодирование текстового файла при помощи блочного алгоритма шифрования ТЕА. Он основан на битовых операциях с 64-битным блоком, имеет 128-битный ключ шифрования. Листинг программы: #include #include #include #pragma hdrstop #include Unit1.h #pragma package(smart_init) #pragma resource *.dfm AnsiStringsp(); AnsiStringsl(); AnsiStringDv(); AnsiStringslj32(char A,char B); AnsiStringsloj(AnsiStringA,AnsiString B); AnsiStringxor(); int Des(); TForm1 *Form1; AnsiStrings,m; int Key =256; AnsiString key=01010101010101010101010101010101;//key AnsiString Delta =10011110001101110111100110111001; AnsiStringvch(char A,char B); //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } AnsiStringvch(char A,char B) { if (A==1) if (B==1) return(0); else return(1); else if (B==1) return(-1); else return(0); } AnsiString vj(AnsiString A,AnsiString B) { AnsiString res =00000000000000000000000000000000 ; char p=0; for(int i=A.Length();i>=1;i--) { if (p==0) { if (slj32(A[i],B[i])==2) { res[i]=0; p=1; } else if (slj32(A[i],B[i])==1) { res[i]=1; p=0; } else res[i]=0; } else { if (slj32(A[i],B[i])==2) { res[i]=1; p=1; } else if (slj32(A[i],B[i])==1) { res[i]=0; p=1; } else { res[i]=1; p=0; } } } return(res); } AnsiString xor(AnsiString A,AnsiString B) { AnsiString res=00000000000000000000000000000000; if (A!=B) res=sloj(A,B); return(res); } AnsiString slj32(char A,char B) { if(A==B==1) return(2);else if(A!=B) return(1);else return(0); } AnsiString sloj(AnsiString A,AnsiString B) { AnsiString res =00000000000000000000000000000000 ; char p=0; for(int i=A.Length();i>=1;i--) { if (p==0) { if (slj32(A[i],B[i])==2) { res[i]=0; p=1; } else if (slj32(A[i],B[i])==1) { res[i]=1; p=0; } else res[i]=0; } else { if (slj32(A[i],B[i])==2) { res[i]=1; p=1; } else if (slj32(A[i],B[i])==1) { res[i]=0; p=1; } else { res[i]=1; p=0; } } } return(res); } AnsiString sp(AnsiString S,int n) { AnsiString p; for (int c=1;c=1;i--) S[i 1]=S[i]; S[1]=0; } return (S); } AnsiString sl(AnsiString S,int n) { AnsiString p; for (int c=1;c1) { l=IntToStr(k % 2) l; k=k/2; } if (k==0) l=00000000; else l=1 l; while (l.Length()!=8) l=0 l; return(l); } int Des(AnsiString k) { int c=0; for (int i=1;iExecute()) Memo1->Lines->LoadFromFile(OpenDialog1->FileName); } /////////////////////Кодирование////////////////////////////////////////////// void __fastcall TForm1::Button8Click(TObject *Sender) { s=Memo1->Text; for (int i =1;i0) for (int i=1;i>5 AnsiString p3=sloj(p2,key);//v1>>5 k1 AnsiString p4=xor(p,p3);//all v0=sloj(v0,p4);// = p=sl(v0,4);//v0>5; p3=sloj(p2,key);//v0>>5 k1; p4=xor(p,p3);// ((v0>5) k3) v1=sloj(v1,p4);// = } Memo2->Text=Memo2->Text v0 v1; } AnsiString re=Memo2->Text; AnsiString q=; Memo2->Clear(); for (int i=1;iText=Memo2->Text char(Des(q)); } } void __fastcall TForm1::Button10Click(TObject *Sender) { ShowMessage(0xC6EF3720); } //////////Декодирование////////////////////////////////////////// void __fastcall TForm1::Button2Click(TObject *Sender) { s=Memo1->Text; for (int i =1;i0) for (int i=1;i>5 AnsiString p3=sloj(p2,key);//v1>>5 k1 AnsiString p4=xor(p,p3);//all v0=sloj(v0,p4);// = p=sl(v0,4);//v0>5; p3=sloj(p2,key);//v0>>5 k1; p4=xor(p,p3);// ((v0>5) k3) v1=sloj(v1,p4);// = } Memo2->Text=Memo2->Text v0 v1; } AnsiString re=Memo2->Text; AnsiString q=; Memo2->Clear(); for (int i=1;iText=Memo1->Text char(Des(q)); } } блочный шифр кодирование алгоритм Результат работы программы Кодирование Декодирование Вывод: в данной работе было произведено кодирование текста при помощи блочного алгоритма шифрования ТЕА.
Заказать написание новой работы



Дисциплины научных работ



Хотите, перезвоним вам?