środa, 28 października 2009

Funkcja sprawdzająca, czy podane hasło spełnia kryteria Polityki Bezpieczeństwa Haseł

Zwraca TRUE jeżeli parametr pass spełnia kryteria, w przeciwnym razie w parametrze message zwracany jest odpowiedni komunikat

function BOOL CheckPassPolicy(pass, message)
BOOL bPass,bResult;
string tab_AZ,tab_az,tab_09,tab_sc, znak, znak1;
CHAR ch,ch1;
int i, j, iKat;
begin
tab_AZ="AĄBCĆDEĘFGHIJKLŁMNŃOÓPQRSTUVWXYZŻŹ";
StrToLower(tab_az,tab_AZ);
tab_09="0123456789";
tab_sc="`!@#$%^*_+-";
bPass = TRUE;
iKat = 0;
if (StrLength(pass)<8) then message="Hasło nie może być krótsze niż 8 litery!"; bPass = FALSE; endif; // Kategoria 1. A..Z bResult = FALSE; for i=0 to StrLength(pass)-1 ch = pass[i]; for j=0 to StrLength(tab_AZ)-1 ch1 = tab_AZ[j]; if (ch = ch1) then bResult = TRUE; endif; endfor; endfor; if bResult then iKat = iKat + 1; endif; // Kategoria 2. a..z bResult = FALSE; for i=0 to StrLength(pass)-1 ch = pass[i]; for j=0 to StrLength(tab_az)-1 ch1 = tab_az[j]; if (ch = ch1) then bResult = TRUE; endif; endfor; endfor; if bResult then iKat = iKat + 1; endif; // Kategoria 3. 0..9 bResult = FALSE; for i=0 to StrLength(pass)-1 StrSub(znak,pass,i,1); if (StrFind(tab_09,znak)>=0) then bResult = TRUE; endif;
endfor;
if bResult then iKat = iKat + 1; endif;

// Kategoria 4. special chars
bResult = FALSE;
for i=0 to StrLength(pass)-1
StrSub(znak,pass,i,1);
if (StrFind(tab_sc,znak)>=0) then bResult = TRUE; endif;
endfor;
if bResult then iKat = iKat + 1; endif;

if (iKat<3) then bPass = FALSE; endif; //Zawartosc spacji w hasle if (StrFind(pass," ")>=0) then
bPass = FALSE;
if StrLength(message)=0 then message = "Hasło nie może zawierać spacji!";
else message = message + "\nHasło nie może zawierać spacji!";
endif;
endif;

return bPass;
end;

Brak komentarzy:

Prześlij komentarz