Delphi – Rutina za kreiranje password-a

Predstaviฤ‡emo vam rutinu za generisanje sluฤajne lozinke. Lozinka (password) ฤ‡e vam sigurno zatrebati u vaลกim aplikacijama, i to najviลกe u merama zaลกtite (recimo zaลกtite softverskog proizvoda). Funkcija za generisanje lozinke kreira password iz izvornog stringa (strIzvor) u koji moลพete dodati bilo koji karakter i koji moลพe biti razliฤite duลพine. Bitno je samo da duลพinu generisane lozinke ne odredimo da bude veฤ‡a od samog izvornog stringa. Ovo je zbog toga ลกto petlju za generisanje, zasnivamo na duลพini izvornog stringa (a moลพe biti i drugaฤije uraฤ‘eno).

U novom projektu, na formu postavite jedno komandno dugme i jedno „Edit“ polje. A zatim u dogaฤ‘aj „Click“ postavite poziv funkcije za generisanje (GenerisiPwd) koja ฤ‡e rezultat smestiti u „Edit“ polje (Edit1).


procedure TForm1.Button1Click(Sender: TObject);
var
Password: string;
begin
//generisanje lozinke duzine 5 karaktera
Password := GenerisiPwd(5);
Edit1.text:=Password;
end;

A evo i same funkcije za generisanje lozinke, koja ฤ‡e kreirati sluฤajni string, veliฤine koju ste odredili u pozivu.


function GenerisiPwd(PWLen:integer):string;
// string koji se koristi kao izvor
const
strIzvor: string=’ABCDEFGHIJKL’+
‘MNOPRSTUVWXY0123456789’;
var
N,K,X,Y:integer;
begin
// provera maksimuma za password
if (PWlen > Length(strIzvor)) then
K := Length(strIzvor)-1
else K := PWLen;
SetLength(result, K);
// setovanje duzine rezultata
Y := Length(strIzvor);
// duzina petlje
N := 0;
// pocetna vrednost
while N < K do
begin
X := Random(Y) + 1;
// sledeci slucajni chr

// provera prisutnosti u rezultatu
if (pos(strIzvor[X], result) = 0) then
begin
inc(N);
// nije pronadjen
Result[N] := strIzvor[X];
// smestanje karaktera
end;
end;
end;


Na kraju ne zaboravite da na poฤetku pozovete proceduru „Randomize“ (poziv upuฤ‡ujemo samo jednom), koja je ugraฤ‘ena procedura za generisanje sluฤajnih brojeva, a rad zasniva na sistemskom clock-u.


procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
end;

Pratite Krstaricu na www.krstarica.com