generator de parola Peculiar (caractere aleatoare) pe Delfi

Această funcție, înfășurat într-o interfață ușor de utilizat, eu sunt cu voi și va împărtăși. Puteți utiliza, de asemenea, rezultatele obținute ale programului pentru a genera parole, cum ar fi serviciile sociale. rețele sau forumuri, astfel, se elibereze de puzzle constantă a inventa parole complexe sau în alte scopuri. Algoritmul funcție este foarte simplu și ușor de înțeles, acesta poate fi ușor rescrise într-o altă limbă pe care îl dețineți, cum ar fi PHP sau js, adăugând astfel funcții pe site. Deci, să începem!

Deschidem veșnic vie noastră, mediul Delphi. Pentru a scrie un exemplu, voi folosi Delphi 7, puteți utiliza, de asemenea, o versiune mai nouă, exemplul funcționează în orice mediu. Crearea unui proiect nou, cu o formă și puneți următoarele componente pe un formular: a 4-CheckBox'a un singur buton butonul de editare unul, o singură etichetă și unul SpinEdit (numere de intrare).


Numele componentelor părăsesc implicit, dar le poate avea pentru a apela, dar în viitor nu te confuz. Dar, modificați proprietatea Legendă, pentru ca utilizatorii să înțeleagă toate pereklyuchaeteley:
- CheckBox1 - «caractere minuscule";
- CheckBox2 - «litere mari";
- CheckBox3 - «Numere";
- CheckBox4 - «Special. simboluri „;
- Button1 - «Generator»;
- Label1 - «lungimea șirului„.

Edit1 - Textul va face proprietate gol, în timp ce componenta proprietatea SpinEdit1 Valoarea este pus egală cu 20 (numărul de caractere din șirul generat în mod implicit). De asemenea, limita valoarea minimă = 2 variază MINVALUE și MAXVALUE = 100 adică Linia noastră ar trebui să fie de cel puțin 2 caractere și nu mai mult de 100.


CheckBox e - switch-uri logice vor semnala funcția noastră RandString. Ce fel de caractere pentru a include în șirul generat.
SpinEdit1 - după cum ați ghicit, este lungimea șirului generat.
Ei bine edit1 acceptă rezultatul.

Așezați toate componentele pe o formă aproximativ așa cum este prezentat mai jos, sau la discreția sa.

generator de parola Peculiar (caractere aleatoare) pe Delfi

Ei bine, toate etapele pregătitoare sunt finalizate, trece la partea distractivă, pentru scrierea de cod.

În modul, mai jos punerea în aplicare cuvântul cheie vom scrie următorul cod de funcție:

Funcția Randstring (Len: cuvânt, LCASE, upcase, Digit, SpecSymb: boolean): string;
const symLCase = 'abcdefghijklmnopqrstuvwxyz'; // set de caractere minuscule
symUCase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; // set de litere majuscule
'0123456789' symNum =; // set de numere
symSpecSymb = „[] <>. „: - + #„; // set de caractere speciale.

// crearea unui set comun de symb, în ​​conformitate cu parametrii funcției LCASE marcate, upcase, Digit, SpecSymb
dacă LCASE apoi symb: = symb + symLCase; // include un set de litere mici
dacă upcase apoi symb: = symb + symUCase; // Include un set de caractere majuscule
dacă Digit apoi symb: = symb + symNum; // include un set de numere
dacă SpecSymb apoi symb: = symb + symSpecSymb; // include un set special. simboluri

dacă symb = '' apoi symb: = symLCase; // verifica dacă setul rămâne gol, implicit includ litere mici

nume: = '';
pentru i: = 1 la Len do
// genera caractere aleatoare dintr-un symb
// ciclul se repetă specificate în parametrului de Len
// returnează un număr întreg aleator între 0 și mărimea set symb
nume: = nume + symb [aleatoare (lungime (symb)) + 1];

În principiu, acest lucru este! Rămâne doar pentru a cauza acesteia, iar rezultatul este transmis utilizatorului. Pentru a face acest lucru, faceți clic pe butonul de două ori generatorul pentru a crea un eveniment clic, și adăugați următorul cod:

Edit1.Text: = RandString (SpinEdit1.Value, CheckBox1.Checked, CheckBox2.Checked, CheckBox3.Checked, CheckBox4.Checked);

Pentru cei care au probleme, eu aduc codul complet al modulului:

utilizări
Ferestre, Mesaje, SysUtils, variante, Clase, grafică, controale, Formulare,
Dialoguri, StdCtrls, Spin;

Funcția Randstring (Len: cuvânt, LCASE, upcase, Digit, SpecSymb: boolean): string;
const symLCase = 'abcdefghijklmnopqrstuvwxyz'; // set de caractere minuscule
symUCase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; // set de litere majuscule
'0123456789' symNum =; // set de numere
symSpecSymb = „[] <>. „: - + #„; // set de caractere speciale.

// crearea unui set comun de symb, în ​​conformitate cu parametrii funcției LCASE marcate, upcase, Digit, SpecSymb
dacă LCASE apoi symb: = symb + symLCase; // include un set de litere mici
dacă upcase apoi symb: = symb + symUCase; // Include un set de caractere majuscule
dacă Digit apoi symb: = symb + symNum; // include un set de numere
dacă SpecSymb apoi symb: = symb + symSpecSymb; // include un set special. simboluri

dacă symb = '' apoi symb: = symLCase; // verifica dacă setul rămâne gol, implicit includ litere mici

nume: = '';
pentru i: = 1 la Len do
// genera caractere aleatoare dintr-un symb
// ciclul se repetă specificate în parametrului de Len
// returnează un număr întreg aleator între 0 și mărimea set symb
nume: = nume + symb [aleatoare (lungime (symb)) + 1];

Procedura TForm1.Button1Click (Expeditor: TObject);
începe
// setați parametrii funcției Randstring și ieșiri rezultatul edit1
Edit1.Text: = Randstring (SpinEdit1.Value, // lungimea liniei generate
CheckBox1.Checked, // dacă este bifată, apoi se transforma într-un set de caractere minuscule
CheckBox2.Checked, // dacă este bifată, apoi se transforma într-un set de litere majuscule
CheckBox3.Checked, // dacă este bifată, apoi se transforma într-un set de numere
CheckBox4.Checked); // dacă este bifată, apoi rândul său, la setul special. simboluri
se încheie;


Asta-i tot! Compilați și încercați.

Am făcut o dată un generator de parolă, care apoi a trebuit să introducă oameni. Curând, a devenit clar faptul că parola nu se poate utiliza numărul 0 și litere mari O literă, și litere mici latină l (ELL), iar titlul I (i), pentru că în multe fonturi sunt prea mult la fel, iar pe ecran și imprimare (ca, de exemplu, aici). Oamenii au fost confuz, furios și a început să cheme suport tehnic. Și totuși, cu litere mici L (ELL) într-un font Serif (cum ar fi Times New Roman) este imposibil de distins de unitate. Deci, dintr-o listă de caractere disponibile și a trebuit să-l arunce. Restul de 25 total litere mari și mici și 8 cifre