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