Capitolul 7 Criptarea Notepad-ului

Elaborați un program care repetă funcțiile unui notebook standard cu capacitatea suplimentară de criptare și decriptare a datelor.

Fig. 7.1. Meniul programului Notepad Encoder

# 8662; Meniul este discutat în capitolul precedent.

Pentru elementul de meniu Format → Înfășurare cuvânt, setați proprietatea Checked la True, deoarece acest element din meniu va acționa ca un comutator.

Nu este nimic altceva de adăugat la formular, iar rezultatul ar trebui să fie în conformitate cu Fig. 7.2.

Fig. 7.2. Formatul Notepad format

Vom cripta textul folosind funcția xor sau offsetul normal. Pentru ca textele criptate să fie necriptate de șablon, vom solicita utilizatorului să aleagă numărul xor la care ar trebui să fie schimbat simbolul.

Mai întâi, declarați variabila globală xr_num de șir de tip:

Acum să luăm comanda meniului. Handler-ul evenimentului OnClick pentru File → Open:

procedura TForm1.N1Click (expeditor: TObject);

// începeți examinarea din dosarul curent

dacă nu OpenDialog1.Execute apoi ShowMessage ('Fișierul nu a fost selectat!')

alt // încărcați fișierul selectat în Memo

Aici vom deschide o casetă de dialog de prezentare generală și vom cere utilizatorului să selecteze un text sau orice alt fișier. După ce utilizatorul a selectat fișierul, îl încărcăm în programul nostru.

Handler-ul evenimentului OnClick pentru File → Save:

procedura TForm1.N2Click (expeditor: TObject);

SaveDialog1 .InitialDir: = GetCurrentDir;

dacă nu SaveDialog1.Execute apoi ShowMessage ("Fișierul nu este salvat!")

altul // salvați în fișier

Deschideți dialogul de salvare a fișierelor După ce utilizatorul a ales locația de salvare a fișierului, extragem textul din Memo și îl stocăm în dosarul selectat.

Handler-ul evenimentului OnClick pentru File → Exit:

procedura TForm1.N4Click (expeditor: TObject);

Închide; // închideți programul

Handlerul de evenimente OnClick pentru Editare → XOR:

procedura TForm1.XoR1Click (expeditor: TObject);

dacă nu InputQuery ("XOR", "Introdu numărul xor:", xr_num)

Aici afișăm o fereastră pentru selectarea numărului xor. Numărul specificat de utilizator va fi stocat în variabila xr_num.

Handlerul de evenimente OnClick pentru Editare → Criptare / Decodare:

procedura TForm1.N5Click (expeditor: TObject);

xr: șir; // ciphertext

i: întreg; // începe contorul de buclă

pentru i: = 1 până la Lungime (Memo1.Text)

începeți / introduceți // prin fiecare caracter din text

// executa offset-ul specificat de utilizator

xr: = xr + Chr (Ord (Memo1.Text [i]) x sau StrToInt (xr_num));

// înlocuiți textul original cu un cod criptat

Această comandă din meniu criptează textul care se află acum în câmpul Memo. În buclă, toate caracterele sunt sortate și fiecare dintre ele este criptată separat.

Handlerul de evenimente OnClick pentru Editare → Ștergere:

procedura TForm1.N8Click (expeditor: TObject);

Memo1.lines.Clear; // clar Memo

Goliți câmpul Memo din textul conținut în acesta.

Handler-ul evenimentului OnClick pentru Format → Word wrap:

procedura TForm1.N9Click (expeditor: TObject);

dacă N9.Checked apoi // dacă este bifată caseta de selectare

N9. Verificat: = Fals; // debifați caseta de selectare

Afișați bara orizontală de defilare

altceva începe // dacă caseta de selectare nu este selectată

N9.Checked: = Adevărat; // bifați caseta de selectare

// eliminați bara orizontală de defilare

În această comandă din meniu, verificăm ce stare este acum în secțiunea Format → Wrap by words. Dacă este selectată caseta de validare, atunci o reseta și afișăm bara orizontală de defilare. În caz contrar, bifați caseta și scoateți bara orizontală de defilare.

Handler-ul evenimentului OnClick pentru Format → Font:

procedura TForm1.N10Click (expeditor: TObject);

// Definiți toate setările fontului și afișați-le

// în caseta de dialog

FontDialog1.Font.Color: = Memo1.Font.Color; // culoarea fontului

FontDialog1.Font.Style:= Memo1.Font.Style; // stil

FontDialog1.Font.Size: = Memo1.Font.Size; // dimensiune

FontDialog1.Font.Charset: = Memo1.Font.Charset; // codificare

FontDialog1.Font.Name:= Memo1.Font.Name; // numele fontului

dacă FontDialog1.Execute apoi

începeți // aplicați toate setările selectate

Înainte de a deschide caseta de dialog pentru selectarea fontului, definim toate setările curente ale fontului, astfel încât acestea să poată fi afișate în caseta de dialog. După ce utilizatorul a apăsat butonul OK din această fereastră, toate setările de fonturi selectate sunt aplicate câmpului Memo.

Acum rămâne doar să implementăm descărcarea automată a fișierelor asociate cu notepad-ul nostru în manageri de fișiere. Pentru aceasta, creați un handler de evenimente OnCreate pentru formularul principal:

procedura TForm1.FormCreate (expeditor: TObject);

Str: String; // calea spre parametru

xr_num: = '2'; // default offset = 2

dacă (ParamCount> 0) începe apoi

Str: ParamStr (1); // Formați calea argumentului

pentru i: = 2 pentru ParamCount do Str: = Str + '' + ParamStr (i);

dacă Str <> '' apoi Memo1.Lines.LoadFromFile (str);

Aici setăm valoarea inițială pentru offset și verificăm dacă au intrat vreun parametru în intrarea programului. Dacă da, aflăm calea spre fișier și afișăm conținutul său în câmpul Memo. Un exemplu de criptare cu offset 10 este prezentat în Fig. 7.3.

Fig. 7.3. Exemplu de criptare cu offset 10

Codul sursă complet al programului Notepad este prezentat în Lista 7.1.

Listing 7.1. Modul de program Notepad Encoder

Ferestre, Mesaje, SysUtils, Variante, Clase, Grafica, Forme de control, Dialoguri, StdCtrls, Meniuri;

tip TForm1 = clasă (TForm)

Articole similare