close

Вход

Забыли?

вход по аккаунту

?

Приложение В (2)

код для вставкиСкачать
 Аннотация
Данный программный документ содержит полный текст программы на языке Си++Buider 6.
Содержание
1 PRC4_1 .............................................................................32
2 URC4_1.............................................................................32
3 URC4ob_1...........................................................................33
4 URC4shif_1........................................................................40
5 UHelp...............................................................................49
6 UAbout..............................................................................50
PRC4_1.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("URC4_1.cpp", Form1);
USEFORM("URC4ob_1.cpp", Form2);
USEFORM("URC4shif_1.cpp", Form3);
USEFORM("UAbout.cpp", AboutBox);
USEFORM("UHelp.cpp", Form4);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
//---------------------------------------------------------------------------
URC4_1.h
//---------------------------------------------------------------------------
#ifndef URC4_1H
#define URC4_1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <jpeg.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:// IDE-managed Components
TButton *Button1;
TButton *Button2;
TImage *Image1;
TButton *Button3;
void __fastcall Button3Click(TObject *Sender);
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
private:// User declarations
public:// User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
URC4_1.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "URC4_1.h"
#include "URC4ob_1.h"
#include "URC4shif_1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Form1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form1->Visible=false;
Application->CreateForm(__classid(TForm2), &Form2);
Form2->ShowModal();
Form2->Free();
Form1->Visible=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form1->Visible=false;
Application->CreateForm(__classid(TForm3), &Form3);
Form3->ShowModal();
Form3->Free();
Form1->Visible=true;
}
//---------------------------------------------------------------------------
URC4ob_1.h
//---------------------------------------------------------------------------
#ifndef URC4ob_1H
#define URC4ob_1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Grids.hpp>
#include <Buttons.hpp>
#include <ExtCtrls.hpp>
#include <jpeg.hpp>
//---------------------------------------------------------------------------
class TForm2 : public TForm
{
__published:// IDE-managed Components
TStringGrid *StringGrid1;
TEdit *Edit1;
TLabel *Label1;
TLabel *Label2;
TLabel *Label3;
TStringGrid *StringGrid2;
TButton *Button1;
TMemo *Memo1;
TLabel *Label4;
TButton *Button2;
TLabel *Label5;
TStringGrid *StringGrid3;
TLabel *Label6;
TEdit *Edit2;
TStringGrid *StringGrid4;
TMemo *Memo2;
TLabel *Label7;
TButton *Button3;
TBitBtn *BitBtn1;
TButton *Button4;
TImage *Image1;
TLabel *Label8;
TButton *Button5;
TButton *Button6;
void __fastcall Edit1Change(TObject *Sender);
void __fastcall Button1Click(TObject *Sender);
void __fastcall FormCreate(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
void __fastcall StringGrid1SelectCell(TObject *Sender, int ACol,
int ARow, bool &CanSelect);
void __fastcall StringGrid3SelectCell(TObject *Sender, int ACol,
int ARow, bool &CanSelect);
void __fastcall Edit2Change(TObject *Sender);
void __fastcall Button3Click(TObject *Sender);
void __fastcall Button4Click(TObject *Sender);
void __fastcall BitBtn1Click(TObject *Sender);
void __fastcall Button5Click(TObject *Sender);
void __fastcall Button6Click(TObject *Sender);
private:// User declarations
public:// User declarations
__fastcall TForm2(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm2 *Form2;
//---------------------------------------------------------------------------
#endif
URC4ob_1.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#include <dstring.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
#include <ctype.h>
#pragma hdrstop
#include "URC4ob_1.h"
#include "UHelp.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
int S[256];
void Init(int n);
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Edit1Change(TObject *Sender)
{
if (Edit1->Text.Length()>3) Button1->Enabled=true;
else Button1->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{AnsiString Key,S1;
int len,i,aint,j;
char ch[2],str1[2];
if (Edit1->Text.Length()>256) Application->MessageBox("Вы ввели слишком длинный ключ","Повторите ввод",MB_OK);
else
{
Edit1->ReadOnly=true;
StringGrid2->Enabled=true;
Label3->Enabled=true;
Button2->Enabled=true;
len=Edit1->Text.Length();
Key=Edit1->Text;
StringGrid2->ColCount=len+1;
for(i=0;i<len;i++)
{
ch[0]=Key.c_str()[i];
ch[1]='\0';
StringGrid2->Cells[i+1][0]=ch;
}
Form2->Label4->Visible=true;
Form2->Memo1->Visible=true;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormCreate(TObject *Sender)
{int i;
StringGrid2->Cells[0][1]="код";
StringGrid2->Cells[0][0]="символ";
StringGrid1->Cells[0][1]="значение";
StringGrid1->Cells[0][0]="номер";
for(i=0;i<256;i++)
{
StringGrid1->Cells[i+1][0]=IntToStr(i);
}
StringGrid3->Cells[0][1]="значение";
StringGrid3->Cells[0][0]="номер";
for(i=0;i<256;i++)
{
StringGrid3->Cells[i+1][0]=IntToStr(i);
}
StringGrid4->Cells[0][1]="значение";
StringGrid4->Cells[0][0]="символ";
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button2Click(TObject *Sender)
{int len,aint,prov,i;
unsigned char achar;
len=Edit1->Text.Length();
prov=0;
for(i=0;i<len;i++)
{
achar=Edit1->Text.c_str()[i];
aint=achar;
if (StringGrid2->Cells[i+1][1]=="") prov++;
else
try
{
if (aint!=StrToInt(StringGrid2->Cells[i+1][1])) prov++;
}
catch(EConvertError&)
{
prov++;
}
}
if (prov>0) Application->MessageBox("Вы ошиблись.","Повторите перевод",MB_OK);
else
{
StringGrid1->Enabled=true;
Label2->Enabled=true;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm2::StringGrid1SelectCell(TObject *Sender, int ACol,
int ARow, bool &CanSelect)
{int len,aint,prov,i,j,len1;
unsigned char achar;
len=Edit1->Text.Length();
if (len>85) len1=256;
else len1=len*3;
prov=0;
for(i=0;i<len1;i++)
{
j=i%len;
achar=Edit1->Text.c_str()[j];
aint=achar;
if (StringGrid1->Cells[i+1][1]=="") prov++;
else
try
{
if (aint!=StrToInt(StringGrid1->Cells[i+1][1])) prov++;
}
catch(EConvertError&)
{
prov++;
}
}
if (prov==0)
{
for(i=0;i<256;i++)
{
j=i%len;
achar=Edit1->Text.c_str()[j];
aint=achar;
StringGrid1->Cells[i+1][1]=IntToStr(aint);
}
Application->MessageBox("Массив заполнен правильно","Правильный ввод",MB_OK);
StringGrid3->Enabled=true;
Label5->Enabled=true;
for(i=0;i<256;i++)
{
StringGrid3->Cells[i+1][1]=IntToStr(i);
}
Init(10);
}
}
//---------------------------------------------------------------------------
void Init(int n)
{int a;
int *k;
int i,
j,
len,
t;
AnsiString Str1;
unsigned char b;
Str1=Form2->Edit1->Text;
k=(int *)calloc(256,sizeof(int));
//заполнение массива k ключом
j=0;
len=Str1.Length();
for (i=0;i<256;i++)
{
b=Str1.c_str()[j];
a=int(b);
k[i]=a;
j++;
if (j==len) j=0;
}
//начальное заполнение блока S
for (i=0;i<256;i++)
S[i]=i;
//перестановка элементов в блоке S в соответствии с ключом
j=0;
for (i=0;i<n;i++)
{
j=(j+k[i]+S[i])%256;
t=S[i];
S[i]=S[j];
S[j]=t;
}
free(k);
}
//---------------------------------------------------------------------------
void __fastcall TForm2::StringGrid3SelectCell(TObject *Sender, int ACol,
int ARow, bool &CanSelect)
{int prov,i;
prov=0;
for(i=0;i<256;i++)
{
if (StringGrid3->Cells[i+1][1]=="") prov++;
else
try
{
if (S[i]!=StrToInt(StringGrid3->Cells[i+1][1])) prov++;
}
catch(EConvertError&)
{
prov++;
}
}
if (prov==0)
{
Init(256);
for(i=0;i<256;i++)
{
StringGrid3->Cells[i+1][1]=IntToStr(S[i]);
}
Application->MessageBox("S блок заполнен правильно","Правильный ввод",MB_OK);
Label6->Enabled=true;
Edit2->Enabled=true;
Edit2->Text="Введите текст для шифрования";
}
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Edit2Change(TObject *Sender)
{
if (Edit2->Text.Length()>9) Button3->Enabled=true;
else Button3->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button3Click(TObject *Sender)
{int len,i;
char ch[2];
AnsiString text1;
len=Edit2->Text.Length();
text1=Edit2->Text;
StringGrid4->ColCount=len+1;
for(i=0;i<len;i++)
{
ch[0]=text1.c_str()[i];
ch[1]='\0';
StringGrid4->Cells[i+1][0]=ch;
}
Edit2->ReadOnly=true;
StringGrid4->Enabled=true;
Button4->Enabled=true;
Label8->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button4Click(TObject *Sender)
{AnsiString Str;
int i,
j,
t,
d,
len,
rc4i,
rc4j,
Clag,
*Kod,
prov,
k1,
k[8];
unsigned char a,
b,
c;
Init(256);
len=Edit2->Text.Length();
rc4i=0;
rc4j=0;
Kod=(int *)calloc(len,sizeof(int));
Str=Edit2->Text;
for(i=0;i<len;i++)
{
a=Str.c_str()[i];
rc4i=(rc4i+1)%256;
rc4j=(rc4j+S[rc4i])%256;
d=S[rc4i];
S[rc4i]=S[rc4j];
S[rc4j]=d;
t=(S[rc4i]+S[rc4j])%256;
Clag=S[t];
b=(unsigned char)Clag;
c=a^b;
Kod[i]=(int)c; //получение кодов символов шифрованного текста
}
prov=0;
for(i=0;i<len;i++)
{
if (StringGrid4->Cells[i+1][1]=="") prov++;
else
try
{
if (Kod[i]!=StrToInt(StringGrid4->Cells[i+1][1])) prov++;
}
catch(EConvertError&)
{
prov++;
}
}
if (prov==0)
{
Application->MessageBox("Текст зашифрован правильно","Правильный ввод",MB_OK);
Memo2->Visible=true;
Label7->Visible=true;
BitBtn1->Visible=true;
Memo2->Clear();
for(i=0;i<len;i++)
{
k1=Kod[i];
Str="";
for(j=0;j<8;j++)
{
k[7-j]=k1%2;
k1=k1/2;
}
for(j=0;j<8;j++)
Str=Str+IntToStr(k[j])+" ";
Memo2->Lines->Add(Str);
}
}
else Application->MessageBox("Ошибки при шифровании текста","Повторите ввод",MB_OK);
free(Kod);
}
//---------------------------------------------------------------------------
void __fastcall TForm2::BitBtn1Click(TObject *Sender)
{
Form2->Close();
Application->MessageBox("Обучение пройдено успешно!","Благодарим за проделанную работу!",MB_OK);
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button5Click(TObject *Sender)
{
Application->CreateForm(__classid(TForm4), &Form4);
Form4->ShowModal();
Form4->Free();
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button6Click(TObject *Sender)
{
Form2->Close();
}
//---------------------------------------------------------------------------
URC4shif_1.h
//---------------------------------------------------------------------------
#ifndef URC4shif_1H
#define URC4shif_1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Grids.hpp>
#include <Menus.hpp>
#include <ExtCtrls.hpp>
#include <jpeg.hpp>
#include <Dialogs.hpp>
#include <Buttons.hpp>
//---------------------------------------------------------------------------
class TForm3 : public TForm
{
__published:// IDE-managed Components
TLabel *Label1;
TMainMenu *MainMenu1;
TMenuItem *N1;
TMenuItem *N3;
TMenuItem *N4;
TMenuItem *N5;
TMenuItem *N6;
TMenuItem *N7;
TMenuItem *S1;
TMenuItem *N8;
TMenuItem *N9;
TMenuItem *S2;
TMenuItem *N13;
TMemo *Memo1;
TMemo *Memo2;
TLabel *Label2;
TMemo *Memo3;
TMemo *Memo4;
TLabel *Label3;
TLabel *Label4;
TButton *Button1;
TImage *Image2;
TImage *Image1;
TOpenDialog *OpenDialog1;
TSaveDialog *SaveDialog1;
TEdit *Edit1;
TLabel *Label5;
TGroupBox *GroupBox1;
TRadioButton *RadioButton1;
TRadioButton *RadioButton2;
TEdit *Edit2;
TEdit *Edit3;
TLabel *Label6;
TLabel *Label7;
TPanel *Panel1;
TSpeedButton *SpeedButton1;
TSpeedButton *SpeedButton2;
TSpeedButton *SpeedButton3;
TSpeedButton *SpeedButton4;
TSpeedButton *SpeedButton5;
TSpeedButton *SpeedButton6;
TSpeedButton *SpeedButton7;
TSpeedButton *SpeedButton8;
TSpeedButton *SpeedButton9;
TSpeedButton *SpeedButton10;
TImage *Image3;
void __fastcall Button1Click(TObject *Sender);
void __fastcall Image2Click(TObject *Sender);
void __fastcall FormCreate(TObject *Sender);
void __fastcall Image1Click(TObject *Sender);
void __fastcall Edit1Change(TObject *Sender);
void __fastcall N6Click(TObject *Sender);
void __fastcall N7Click(TObject *Sender);
void __fastcall N8Click(TObject *Sender);
void __fastcall N9Click(TObject *Sender);
void __fastcall S2Click(TObject *Sender);
void __fastcall S1Click(TObject *Sender);
void __fastcall N4Click(TObject *Sender);
void __fastcall N3Click(TObject *Sender);
private:// User declarations
public:// User declarations
__fastcall TForm3(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm3 *Form3;
//---------------------------------------------------------------------------
#endif
URC4shif_1.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "URC4shif_1.h"
#include "UAbout.h"
#include "UHelp.h"
#include <stdio.h>
#include <stdlib.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm3 *Form3;
void Init(AnsiString Str1,int *S);
void Shifrovanie(int *S,int &rc4i,int &rc4j);
void DEShifrovanie(int *S,int &rc4i,int &rc4j);
void VivodSbloka(int *S,int rc4i,int rc4j);
int Skey[256];
//---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm3::Button1Click(TObject *Sender)
{
Form3->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm3::Image2Click(TObject *Sender)
{AnsiString Key;
int *S,i,rci,rcj;
if (RadioButton1->Checked==true)
{
if ((Edit1->Text.Length())>256) Application->MessageBox("Вы ввели слишком длинный ключ","Повторите ввод",MB_OK);
else
{
S=(int *)calloc(256,sizeof(int));
Key=Edit1->Text;
Init(Key,S);
rci=0;
rcj=0;
Shifrovanie(S,rci,rcj);
for(i=0;i<256;i++)
Skey[i]=S[i];
VivodSbloka(S,rci,rcj);
free(S);
}
}
else
{
rci=StrToInt(Edit2->Text);
rcj=StrToInt(Edit3->Text);
Shifrovanie(Skey,rci,rcj);
VivodSbloka(Skey,rci,rcj);
}
}
//---------------------------------------------------------------------------
void Init(AnsiString Str1,int *S)
{int a;
int *k;
int i,
j,
len,
t;
unsigned char b;
k=(int *)calloc(256,sizeof(int));
//заполнение массива k ключом
j=0;
len=Str1.Length();
for (i=0;i<256;i++)
{
b=Str1.c_str()[j];
a=int(b);
k[i]=a;
j++;
if (j==len) j=0;
}
//начальное заполнение блока S
for (i=0;i<256;i++)
S[i]=i;
//перестановка элементов в блоке S в соответствии с ключом
j=0;
for (i=0;i<256;i++)
{
j=(j+k[i]+S[i])%256;
t=S[i];
S[i]=S[j];
S[j]=t;
}
free(k);
}
//---------------------------------------------------------------------------
void Shifrovanie(int *S,int &rc4i,int &rc4j)
{AnsiString Str2,Str3;
char *S1;
int i,
j,
k,
t,
d,
len,
Clag,
strok,//число строк для шифрования
*Kod;
unsigned char a,
b,
c;
strok=Form3->Memo1->Lines->Count;
Form3->Memo2->Clear();
for (i=0;i<strok;i++)
{
Str2=Form3->Memo1->Lines->Strings[i];
len=Str2.Length();
Kod=(int *)calloc(len,sizeof(int));
Str3="";
for (j=0;j<len;j++)
{
a=Str2.c_str()[j];
rc4i=(rc4i+1)%256;
rc4j=(rc4j+S[rc4i])%256;
d=S[rc4i];
S[rc4i]=S[rc4j];
S[rc4j]=d;
t=(S[rc4i]+S[rc4j])%256;
Clag=S[t];
b=(unsigned char)Clag;
c=a^b;
Kod[j]=(int)c; //получение кодов символов шифрованного текста
Str3=Str3+IntToStr(Kod[j])+" ";
}
Form3->Memo2->Lines->Add(Str3);
free(Kod);
}
}
//---------------------------------------------------------------------------
void VivodSbloka(int *S,int rc4i,int rc4j)
{int i,j,aint;
char ch[2];
unsigned char achar;
AnsiString Str;
Form3->Memo4->Clear();
for(i=0;i<16;i++)
{
Str="";
for(j=0;j<16;j++)
{
aint=S[i*16+j];
achar=(unsigned char)aint;
ch[0]=achar;
ch[1]='\0';
if (i*16+j<10) Str=Str+" ";
if (i*16+j<100) Str=Str+" ";
Str=Str+IntToStr(i*16+j)+"-"+IntToStr(aint)+" ";
if (aint<10) Str=Str+" ";
if (aint<100) Str=Str+" ";
}
Form3->Memo4->Lines->Add(Str);
}
Form3->Edit2->Text=IntToStr(rc4i);
Form3->Edit3->Text=IntToStr(rc4j);
}
//---------------------------------------------------------------------------
void __fastcall TForm3::FormCreate(TObject *Sender)
{int i;
for(i=0;i<256;i++)
Skey[i]=i;
Memo1->Clear();
Memo2->Clear();
Memo3->Clear();
Memo4->Clear();
VivodSbloka(Skey,0,0);
RadioButton1->Checked=true;
Edit1->Text="Введите ключ";
}
//---------------------------------------------------------------------------
void __fastcall TForm3::Image1Click(TObject *Sender)
{AnsiString Key,
Str2;
int *S,
i,
rci,
rcj,
aint,
k,
strok,
prov,
len,
j;
char *Text1;
unsigned char achar;
//проверка
prov=0;
strok=Form3->Memo2->Lines->Count;
Text1=(char *)calloc(4,sizeof(char));
for(i=0;i<strok;i++)
{
k=0;
Str2=Form3->Memo2->Lines->Strings[i];
len=Str2.Length();
for(j=0;j<len;j++)
{
achar=Str2.c_str()[j];
aint=(int)achar;
if (((aint>57)||(aint<48))&&(aint!=32)) prov++;
}
if (prov==0)
{
for(j=0;j<len;j++)
{
if ((Str2.c_str()[j]==' ')&&(k>0)&&(prov==0))
{
Text1[k]='\0';
k=0;
aint=atoi(Text1);
if ((aint>255)||(aint<0)) prov++;
}
if ((Str2.c_str()[j]!=' ')&&(prov==0))
{
Text1[k]=Str2.c_str()[j];
k++;
}
if (k>3) prov++;
}
if ((k>0)&&(prov==0))
{
Text1[k]='\0';
k=0;
aint=atoi(Text1);
if ((aint>255)||(aint<0)) prov++;
}
}
}
free(Text1);
if (prov>0) Application->MessageBox("Шифрованный текст содержит неправильные данные","Повторите ввод",MB_OK);
else
if (RadioButton1->Checked==true)
{
if ((Edit1->Text.Length())>256) Application->MessageBox("Вы ввели слишком длинный ключ","Повторите ввод",MB_OK);
else
{
S=(int *)calloc(256,sizeof(int));
Key=Edit1->Text;
Init(Key,S);
rci=0;
rcj=0;
DEShifrovanie(S,rci,rcj);
for(i=0;i<256;i++)
Skey[i]=S[i];
VivodSbloka(S,rci,rcj);
free(S);
}
}
else
{
rci=StrToInt(Edit2->Text);
rcj=StrToInt(Edit3->Text);
DEShifrovanie(Skey,rci,rcj);
VivodSbloka(Skey,rci,rcj);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm3::Edit1Change(TObject *Sender)
{
if ((Edit1->Text.Length())>0)
{
Image1->Enabled=true;
Image2->Enabled=true;
}
else
{
Image1->Enabled=false;
Image2->Enabled=false;
}
}
//---------------------------------------------------------------------------
void DEShifrovanie(int *S,int &rc4i,int &rc4j)
{AnsiString Str2,Str3;
char *S1,
*Text1;
int i,
j,
k,
t,
l,
d,
len,
aint,
Clag,
strok;//число строк для шифрования
unsigned char a,
b,
c;
strok=Form3->Memo2->Lines->Count;
Form3->Memo3->Clear();
Text1=(char *)calloc(4,sizeof(char));
for (i=0;i<strok;i++)
{
l=0;
k=0;
Str2=Form3->Memo2->Lines->Strings[i];
len=Str2.Length();
S1=(char *)calloc(len+1,sizeof(char));
Str3="";
for (j=0;j<len;j++)
{
if ((Str2.c_str()[j]==' ')&&(k>0))
{
Text1[k]='\0';
k=0;
aint=atoi(Text1);
a=(unsigned char)aint;
rc4i=(rc4i+1)%256;
rc4j=(rc4j+S[rc4i])%256;
t=(S[rc4i]+S[rc4j])%256;
d=S[rc4i];
S[rc4i]=S[rc4j];
S[rc4j]=d;
Clag=S[t];
b=(unsigned char)Clag;
c=a^b;
S1[l]=c;
l++;
}
if (Str2.c_str()[j]!=' ') {Text1[k]=Str2.c_str()[j];k++;}
}
if (k>0)
{
Text1[k]='\0';
k=0;
aint=atoi(Text1);
a=(unsigned char)aint;
rc4i=(rc4i+1)%256;
rc4j=(rc4j+S[rc4i])%256;
t=(S[rc4i]+S[rc4j])%256;
d=S[rc4i];
S[rc4i]=S[rc4j];
S[rc4j]=d;
Clag=S[t];
b=(unsigned char)Clag;
c=a^b;
S1[l]=c;
l++;
}
S1[l]='\0';
Form3->Memo3->Lines->Add(S1);
free(S1);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm3::N6Click(TObject *Sender)
{
try
{
if (OpenDialog1->Execute()) Memo1->Lines->LoadFromFile(OpenDialog1->FileName);
}
catch(...)
{
Application->MessageBox("Вы ввели ошибочное имя файла","Ошибка ввода имени файла",MB_OK);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm3::N7Click(TObject *Sender)
{
try
{
if (OpenDialog1->Execute()) Memo2->Lines->LoadFromFile(OpenDialog1->FileName);
}
catch(...)
{
Application->MessageBox("Вы ввели ошибочное имя файла","Ошибка ввода имени файла",MB_OK);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm3::N8Click(TObject *Sender)
{
if (SaveDialog1->Execute()) Memo2->Lines->SaveToFile(SaveDialog1->FileName);
}
//---------------------------------------------------------------------------
void __fastcall TForm3::N9Click(TObject *Sender)
{
if (SaveDialog1->Execute()) Memo3->Lines->SaveToFile(SaveDialog1->FileName);
}
//---------------------------------------------------------------------------
void __fastcall TForm3::S2Click(TObject *Sender)
{AnsiString Filename1;
FILE *out;
int i,
j,
rc4i,
rc4j;
if (SaveDialog1->Execute())
{
Filename1=SaveDialog1->FileName;
if ((out=fopen(Filename1.c_str(),"w"))!=NULL)
{
rc4i=StrToInt(Edit2->Text);
rc4j=StrToInt(Edit3->Text);
fprintf(out,"%d\n",rc4i);
fprintf(out,"%d\n",rc4j);
for(i=0;i<256;i++)
fprintf(out,"%d\n",Skey[i]);
fclose(out);
}
else Application->MessageBox("Вы ввели ошибочное имя файла","Ошибка ввода имени файла",MB_OK);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm3::S1Click(TObject *Sender)
{AnsiString Filename2;
FILE *in;
int i,
j,
rc4i,
rc4j,
len,
k,
i1,
prov,
*S1;
char str[80],text1[4];
prov=0;
S1=(int *)calloc(256,sizeof(int));
if (OpenDialog1->Execute())
{
Filename2=OpenDialog1->FileName;
if ((in=fopen(Filename2.c_str(),"r"))!=NULL)
{
try
{
fscanf(in,"%s",str);
rc4i=atoi(str);
if ((strlen(str)>3)||(rc4i>255)||(rc4i<0)) prov++;
fscanf(in,"%s",str);
rc4j=atoi(str);
if ((strlen(str)>3)||(rc4j>255)||(rc4j<0)) prov++;
for(i=0;i<256;i++)
{
fscanf(in,"%s",str);
S1[i]=atoi(str);
if ((strlen(str)>3)||(S1[i]>255)||(S1[i]<0)) prov++;
}
}
catch(...)
{
prov++;
}
if (prov>0)
Application->MessageBox("Данный файл содержит неправильный данные","Ошибка ввода имени файла",MB_OK);
else
{
for(i=0;i<256;i++)
Skey[i]=S1[i];
VivodSbloka(Skey,rc4i,rc4j);
}
fclose(in);
}
else Application->MessageBox("Вы ввели ошибочное имя файла","Ошибка ввода имени файла",MB_OK);
}
free(S1);
}
//---------------------------------------------------------------------------
void __fastcall TForm3::N4Click(TObject *Sender)
{
Application->CreateForm(__classid(TAboutBox), &AboutBox);
AboutBox->ShowModal();
AboutBox->Free();
}
//---------------------------------------------------------------------------
void __fastcall TForm3::N3Click(TObject *Sender)
{
Application->CreateForm(__classid(TForm4), &Form4);
Form4->ShowModal();
Form4->Free();
}
//---------------------------------------------------------------------------
UHelp.h
//---------------------------------------------------------------------------
#ifndef UHelpH
#define UHelpH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
//---------------------------------------------------------------------------
class TForm4 : public TForm
{
__published:// IDE-managed Components
TButton *Button1;
TPageControl *PageControl1;
TTabSheet *TabSheet1;
TTabSheet *TabSheet2;
TTabSheet *TabSheet3;
TMemo *Memo1;
TMemo *Memo2;
TMemo *Memo3;
void __fastcall Button1Click(TObject *Sender);
private:// User declarations
public:// User declarations
__fastcall TForm4(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm4 *Form4;
//---------------------------------------------------------------------------
#endif
UHelp.cpp
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm4 *Form4;
//---------------------------------------------------------------------------
__fastcall TForm4::TForm4(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm4::Button1Click(TObject *Sender)
{
Form4->Close();
}
//---------------------------------------------------------------------------
UAbout.h
//----------------------------------------------------------------------------
#ifndef UAboutH
#define UAboutH
//----------------------------------------------------------------------------
#include <vcl\System.hpp>
#include <vcl\Windows.hpp>
#include <vcl\SysUtils.hpp>
#include <vcl\Classes.hpp>
#include <vcl\Graphics.hpp>
#include <vcl\Forms.hpp>
#include <vcl\Controls.hpp>
#include <vcl\StdCtrls.hpp>
#include <vcl\Buttons.hpp>
#include <vcl\ExtCtrls.hpp>
#include <jpeg.hpp>
//----------------------------------------------------------------------------
class TAboutBox : public TForm
{
__published:
TPanel *Panel1;
TImage *ProgramIcon;
TLabel *ProductName;
TLabel *Label1;
TLabel *Label2;
TLabel *Label3;
TLabel *Label4;
TBitBtn *BitBtn1;
void __fastcall BitBtn1Click(TObject *Sender);
private:
public:
virtual __fastcall TAboutBox(TComponent* AOwner);
};
//----------------------------------------------------------------------------
extern PACKAGE TAboutBox *AboutBox;
//----------------------------------------------------------------------------
#endif
UAbout.cpp
#pragma hdrstop
#include "UAbout.h"
//---------------------------------------------------------------------
#pragma resource "*.dfm"
TAboutBox *AboutBox;
//---------------------------------------------------------------------
__fastcall TAboutBox::TAboutBox(TComponent* AOwner)
: TForm(AOwner)
{
}
//---------------------------------------------------------------------
void __fastcall TAboutBox::BitBtn1Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
Документ
Категория
Рефераты
Просмотров
37
Размер файла
236 Кб
Теги
лабораторная работа, лаба, приложение, лабораторная
1/--страниц
Пожаловаться на содержимое документа