Przejdź do głównej zawartości

Generator haseł

Stworzysz Generator haseł - aplikacje umozliwiajaca generowanie bezpiecznych, losowych haseł na podstawie wybranych parametrow. Użytkownik okresla długość hasła oraz zestawy znakow (małe litery, wielkie litery, cyfry, znaki specjalne), a system generuje losowe hasło i zapisuje je do historii. To praktyczne narzedzie, które można wykorzystać do tworzenia bezpiecznych haseł.

Czego się nauczysz?

  • Bezpiecznego generowania losowych wartości (random_int vs rand)
  • Pracy z tablicami znakow i ich łączenia
  • Walidacji parametrow wejsciowych
  • Zapisu historii operacji do pliku JSON

W prawdziwej pracy...

Bezpieczeństwo haseł to fundament cyberbezpieczenstwa. Znajomosc zasad tworzenia silnych haseł i kryptograficznie bezpiecznych funkcji losowych (jak random_int w PHP) jest niezbedna przy budowaniu systemow uwierzytelniania, generatorow tokenow, kluczy API czy systemow resetowania haseł.

  1. Formularz parametrow hasła Użytkownik wybiera długość hasła (np. 8-32 znakow) oraz zaznacza checkboxy: małe litery, wielkie litery, cyfry, znaki specjalne.

  2. Generowanie losowego hasła System tworzy hasło z wybranych zestawow znakow, używając bezpiecznej funkcji losowej. Wynik jest wyświetlany w czytelnej formie.

  3. Zapis do historii Każde wygenerowane hasło jest zapisywane do pliku JSON wraz z data i parametrami (bez przechowywania samego hasła w produkcji!).

Przykładowa struktura pliku JSON:

{
"passwords": [
{
"id": 1,
"length": 16,
"has_lowercase": true,
"has_uppercase": true,
"has_numbers": true,
"has_special": false,
"strength": "strong",
"created_at": "2026-02-13 10:30:00"
},
{
"id": 2,
"length": 8,
"has_lowercase": true,
"has_uppercase": false,
"has_numbers": true,
"has_special": false,
"strength": "medium",
"created_at": "2026-02-13 11:45:00"
}
]
}

Wymagane funkcje:

  • Formularz z polem długości hasła (8-32 znakow)
  • Checkboxy: małe litery, wielkie litery, cyfry
  • Walidacja w PHP (długość w zakresie, min. 1 zestaw znakow)
  • Generowanie hasła z random_int()
  • Wyświetlenie wygenerowanego hasła
  • Prosty interfejs CSS

Przykładowy scenariusz:

Użytkownik wchodzi na strone, ustawia długość hasła na 12 znakow, zaznacza “Małe litery” i “Cyfry”. Po kliknieciu “Generuj” widzi hasło np. “a8k2m5n9p3x1”. Przy probie wygenerowania hasła bez zadnego zaznaczenia widzi błąd.

Ocena: 3.0

Zestawy znakow:

$lowercase = 'abcdefghijklmnopqrstuvwxyz';
$uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$numbers = '0123456789';
$special = '!@#$%^&*()_+-=[]{}|;:,.<>?';
$characters = '';
if (isset($_POST['lowercase'])) $characters .= $lowercase;
if (isset($_POST['uppercase'])) $characters .= $uppercase;
if (isset($_POST['numbers'])) $characters .= $numbers;
if (isset($_POST['special'])) $characters .= $special;

Bezpieczne generowanie hasła:

function generatePassword(string $characters, int $length): string {
$password = '';
$charLength = strlen($characters);
for ($i = 0; $i < $length; $i++) {
// random_int() jest kryptograficznie bezpieczne (w przeciwienstwie do rand())
$index = random_int(0, $charLength - 1);
$password .= $characters[$index];
}
return $password;
}

Walidacja parametrow:

$length = (int)$_POST['length'];
if ($length < 8 || $length > 32) {
$errors[] = "Długość hasła musi być miedzy 8 a 32 znakow";
}
if (empty($characters)) {
$errors[] = "Wybierz co najmniej jeden zestaw znakow";
}

Analiza siły hasła:

function analyzeStrength(int $length, bool $hasLower, bool $hasUpper, bool $hasNumbers, bool $hasSpecial): string {
$score = 0;
if ($length >= 12) $score++;
if ($length >= 16) $score++;
if ($hasLower && $hasUpper) $score++;
if ($hasNumbers) $score++;
if ($hasSpecial) $score++;
if ($score >= 4) return 'strong';
if ($score >= 2) return 'medium';
return 'weak';
}

Wykorzystaj lekcje!

Cotygodniowe spotkania podczas lekcji to idealny moment, by:

  • Pokazac postepy - nawet małe kroki się licza
  • Wyjaśnić watpliwosci - pytaj, nie zgaduj
  • Skonsultowac rozwiązania - feedback pomoze Ci się rozwijac

Pracuj iteracyjnie - lepiej mieć działający wariant A niz niedokonczony C!