Ten wpis poświęcę skryptowi, który mierzy siłę hasła w JavaScript. Do pomiaru użyję wyrażeń regularnych.

Zanim przejdę do kodu, trzeba określić kiedy hasło jest silne. Czy silne hasło to hasło zawierające 30 liter czy raczej takie które jest 10 znakowe i posiada małe/duże litery cyfry i znaki specjalne?

I tutaj z pomocą przychodzi matematyka. Weźmy pod uwagę hasło o długości 5.

Gdy hasło składa się z samych małych liter od a od z jego siła to 245 = 7962624

Gdy hasło składa się z małych i wielkich liter to jego siła wynosi 485 = 254803968

Gdy dodamy cyfry otrzymujemy 585 = 656356768

A gdy dodamy znaki specjalne to możemy otrzymać w zależności od kodowania 1275 w przypadku ASCII.

Wystarczy, że zwiększymy długość hasła o jeden znak, a jego złamanie jest o wiele trudniejsze(metoda bruteforce).

Przejdźmy teraz do kodu, będe potrzebował kilku wyrażeń regularnych:

var warianty = {
        cyfry: /\d/.test(pass), //sprawdza czy wystepuja cyfry
        male: /[a-z]/.test(pass), //sprawdza czy sa male litery
        duze: /[A-Z]/.test(pass), //sprawdza czy sa duze litery
        specjalne: /\W/.test(pass), //sprawdza czy sa znaki specjalne
        dlugosc: pass.length > 7 //sprawdza czy dlugosc hasla jest wieksza od 7
    };

Na tych prostych testach oparty jest skrypt. Każdy test ma wartość 25% i w zależności od rezultatu odpowiednio koloruje box z wynikiem.

Miernik siły hasła jest przydatnym narzędziem, które może być łatwo napisane w JavaScript, by poinformować użytkownika o sile hasła, które wybrał, bądź na wymuszeniu wprowadzenia hasła o określonej sile.