Generator haseł
Przygotowanie
- Utwórz nowy projekt za pomocą
cargo
cargo new password-generator
- Przejdź do katalogu projektu i otwórz plik
Cargo.toml
. - W sekcji
dependencies
dodaj zależność do skrzynki o nazwierand
[dependencies] rand = "0.9.0"
Funkcja generowania silnego hasła
- Utwórz plik
src/main.rs
i dodaj poniższy kod - Napisz funkcję
generate_password
, która wygeneruje losowy ciąg znaków o określonej długości. Zacznij od napisania sygnatury funkcji - zastanów się jaki jest typ zwracany przez funkcję oraz jakie parametry przyjmuje. - Utwórz tablicę znaków zawierającą wszystkie znaki, które mogą wystąpić w haśle, a następnie wygeneruj losowy indeks, który posłuży do wybrania znaku z tablicy.
- Do generowania liczb losowych wykorzystaj funkcje z biblioteki
rand
, której przykład użycia znajdziesz na poniższym fragmencie kodu:use rand::{rng, Rng); fn main() { let mut rng = rand::rng(); // creates a new random number generator let rand_number = rng.random_range(0..10); // generates random number between 0 and 10 }
- Napisz test jednostkowy, który sprawdzi czy wygenerowane hasło ma odpowiednią długość
- Napisz program (z funkcją
main
), który wygeneruje 5 losowych haseł o długości zadanej przez użytkownika. Wygenerowane hasła powinny zostać wypisane na konsolę.
Wybór zestawu znaków
- Rozszerz funkcję
generate_password
o parametr, który pozwoli na wybór zestawu znaków, z którego mają być losowane znaki do hasła. Nowy parametr o nazwiecharsets
powinien być tablicą przechowującą referencje do łańuchów znakowych, a elementy tablicy powinny przyjmować jedną z wartości:lowercase
- małe litery,uppercase
- duże litery,digits
- cyfry,special
- znaki specjalne.
- W zależności od wartości parametru
charsets
funkcja powinna zwracać hasło złożone z małych liter, dużych liter, cyfr lub znaków specjalnych lub dowolnej kombinacji tych zestawów znaków. Jeśli tablicacharsets
jest pusta lub zawiera (wszystkie) błędne wartości, funkcja powinna zwrócić hasło złożone z wszystkich typów znaków. Błędne wartości w tablicycharsets
powinny być ignorowane. - Napisz test jednostkowy, który sprawdzi czy wygenerowane hasło zawiera tylko znaki z wybranych zestawów znaków.
Last updated on