//--------------------------------------------------------------------------- #include #pragma hdrstop #include "krypto_11u.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; char text_0[] = "1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz"; char text_1[] = "Das Objekt TMemo kapselt ein mehrzeiliges Eingabefeld von Windows. \ Beschreibung: Mit einem TMemo-Objekt plazieren Sie in einem Formular ein\ mehrzeiliges Windows-Eingabefeld. In Felder dieser Art kann der Benutzer\ mehrere Zeilen Text eingeben. Damit eigenen sich diese Komponenten gut \ für umfangreichere Informationen. \ TMemo implementiert das generische Verhalten, das in TCustomMemo einge- \ führt wurde, und deklariert viele der von TCustomMemo geerbten Eigen- \ schaften als published. Neues Verhalten wird jedoch nicht eingeführt."; char text_2[] = "TMemo is a wrapper for a windows multiline edit control. \ Description: Use TMemo to put a standard Windows multiline edit control \ on a form. Multiline edit boxes allow the user to enter more than one \ line of text. They are appropriate for representing lengthy information.\ TMemo implements the generic behavior introduced in TCustomMemo. TMemo \ publishes many of the properties inherited from TCustomMemo, but does \ not introduce any new behavior. \ Note: Under Win 9x, there is a limit of 64k of text for this control."; char text_3[] = "entfernt"; char text_g2[] = "\ XZZBFCHYQXBJFCCGJQZFKCBSKBXJPQFCTGBBBPOYRQHYJBXFXR\ PGBUBGBQQGBDBJXLLHBKFLBBFCHYQXBJFCCGJQZFKCBYYAAGBI\ XRWCIGBDWSOFLCEQFCICZIQGEPHYIRBQMDLCQAECKPBGKSKBMS\ QXQQFAEYRAEBFCPRFCCCICFLRLAEFLDLFAERJCEPDGKEKGZFQK\ BFOGKBBLPAELBC"; char text_g6[] = "\ ACKWCVKBBSYCIFNBGJCIVXYLNEIEMJIFEBYUESZTOJKBUWUYAU\ ABYNEJMLNZEGMEUEOKMFCEEEQXERTAMECVFJULWYNFMTVTDJMD\ UKZFTBYWZVZAIVHTQXFVCLBBBIKBTMYJPGWXNTHFVKYZNVVWJL\ TABLCTHBCVBUIFAMCVFFTXCEUOLZCEGOQVBKMFPKAZNHVBWYTN\ MALZNEMGMTHOMX"; //12345678901234567890123456789012345678901234567890 char text_Null[] = ""; char text_c[1000]; // Puffer für den zu bearbeitenden Text //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::btnKlartextClick(TObject *Sender) { char puffer[1000]; int i, k; switch (rbgText->ItemIndex) { case 0: strcpy( puffer, text_0); break; case 1: strcpy( puffer, text_1); break; case 2: strcpy( puffer, text_2); break; case 3: strcpy( puffer, text_3); break; case 4: strcpy( puffer, text_g2); break; case 5: strcpy( puffer, text_g6); break; } // Leerzeichen entfernen und alles in Großbuchstaben wandeln i = 0; k = 0; while (puffer[i] != 0) { if (puffer[i] >= 'A' && puffer[i] <= 'Z') text_c[k++] = puffer[i]; else if (puffer[i] >= 'a' && puffer[i] <= 'z') text_c[k++] = puffer[i] - 32; else switch (puffer[i]) { case 'ä': case 'Ä': text_c[k++] = 'A'; text_c[k++] = 'E'; break; case 'ö': case 'Ö': text_c[k++] = 'O'; text_c[k++] = 'E'; break; case 'ü': case 'Ü': text_c[k++] = 'U'; text_c[k++] = 'E'; break; } i++; } Memo1->Clear(); Memo1->Lines->Add(text_c); Memo1->Lines->Add(text_Null); } //--------------------------------------------------------------------------- int aufbereitenSchluessel(char schluessel[]) // Der Schlüsseltext wird im Parameter schluessel als 0-terminierter Text erwartet. // Der aufbereitete Schlüssel (Verschiebungen) wird in schluessel zurückgeliefert. // Der Funktionswert entspricht der Schlüsselwortlänge. { int i = 0; while (schluessel[i] != 0) { // schluessel[i] -= ' '; i++; } return i; } //--------------------------------------------------------------------------- void __fastcall TForm1::btnVerschlClick(TObject *Sender) { char geheimtext[1000]; int i; // Index für das Textfeld char schluessel[100]; int schl_laenge; int schl_pos; // Index für das Schlüsselwortfeld strcpy(schluessel, edtSchluessel->Text.c_str() ); schl_laenge = aufbereitenSchluessel( schluessel ); edtSchlLaenge->Text = IntToStr(schl_laenge); i = 0; schl_pos = 0; while (text_c[i] != 0) { if (text_c[i] >= ' ' && text_c[i] <= '~') geheimtext[i] = ( text_c[i] - 'A' + schluessel[schl_pos] -'A' ) % ('Z'-'A' + 1) + 'A'; // geheimtext[i] = ( text_c[i] - ' ' + schluessel[schl_pos]) % ('~'-' ' + 1) + ' '; else geheimtext[i] = text_c[i]; schl_pos++; if (schl_pos >= schl_laenge) schl_pos = 0; i++; } geheimtext[i] = 0; // Endekennung des Strings eintragen strcpy( text_c, geheimtext); Memo1->Lines->Add(text_c); Memo1->Lines->Add(text_Null); } //--------------------------------------------------------------------------- void __fastcall TForm1::btnEntschlClick(TObject *Sender) { char klartext[1000]; int i = 0; // Index für das Textfeld char schluessel[100]; int schl_laenge; int schl_pos; // Index für das Schlüsselwortfeld strcpy(schluessel, edtSchluessel->Text.c_str() ); schl_laenge = aufbereitenSchluessel( schluessel ); edtSchlLaenge->Text = IntToStr(schl_laenge); while (text_c[i] != 0) { if (text_c[i] >= ' ' && text_c[i] <= '~') klartext[i] = ( text_c[i] + 'A' - schluessel[schl_pos] +'A' ) % ('Z'-'A' + 1) + 'A'; else klartext[i] = text_c[i]; schl_pos++; if (schl_pos >= schl_laenge) schl_pos = 0; i++; } klartext[i] = 0; // Endekennung des Strings eintragen strcpy( text_c, klartext); Memo1->Lines->Add(text_c); Memo1->Lines->Add(text_Null); } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- int berMittelwert(int feld[], int laenge) { int sum = 0; for (int i = 0; i < laenge; i++) sum += feld[i]; return sum/laenge; } //--------------------------------------------------------------------------- void __fastcall TForm1::btnFriedmannClick(TObject *Sender) { int i, k; int kappa[1000]; int mw; int textlaenge = strlen( text_c); } //--------------------------------------------------------------------------- void __fastcall TForm1::btnVerschlCaesarClick(TObject *Sender) { char geheimtext[1000]; int i; // Index für das Textfeld char schluessel[1]; int schl_laenge; int schl_pos; // Index für das Schlüsselwortfeld strcpy(schluessel, "D"); schl_laenge = aufbereitenSchluessel( schluessel ); edtSchlLaenge->Text = IntToStr(schl_laenge); i = 0; schl_pos = 0; while (text_c[i] != 0) { if (text_c[i] >= ' ' && text_c[i] <= '~') geheimtext[i] = ( text_c[i] - 'A' + schluessel[schl_pos] -'A' ) % ('Z'-'A' + 1) + 'A'; // geheimtext[i] = ( text_c[i] - ' ' + schluessel[schl_pos]) % ('~'-' ' + 1) + ' '; else geheimtext[i] = text_c[i]; schl_pos++; if (schl_pos >= schl_laenge) schl_pos = 0; i++; } geheimtext[i] = 0; // Endekennung des Strings eintragen strcpy( text_c, geheimtext); Memo1->Lines->Add(text_c); Memo1->Lines->Add(text_Null); } //--------------------------------------------------------------------------- void __fastcall TForm1::btnEntschlCaesarClick(TObject *Sender) { char geheimtext[1000]; int i; // Index für das Textfeld char schluessel[1]; int schl_laenge; int schl_pos; // Index für das Schlüsselwortfeld strcpy(schluessel, "X"); schl_laenge = aufbereitenSchluessel( schluessel ); edtSchlLaenge->Text = IntToStr(schl_laenge); i = 0; schl_pos = 0; while (text_c[i] != 0) { if (text_c[i] >= ' ' && text_c[i] <= '~') geheimtext[i] = ( text_c[i] + 'A' - (schluessel[schl_pos] +'A' )) % ('Z'-'A' + 1) + 'A'; // geheimtext[i] = ( text_c[i] - ' ' + schluessel[schl_pos]) % ('~'-' ' + 1) + ' '; else geheimtext[i] = text_c[i]; schl_pos++; if (schl_pos >= schl_laenge) schl_pos = 0; i++; } geheimtext[i] = 0; // Endekennung des Strings eintragen strcpy( text_c, geheimtext); Memo1->Lines->Add(text_c); Memo1->Lines->Add(text_Null); } //---------------------------------------------------------------------------