password_hash

funkcja

Hashuje hasło używając bcrypt lub argon2. Automatycznie generuje sól. Jedyna właściwa metoda przechowywania haseł w PHP — nigdy md5 ani sha1.

password_hash(string $password, string|int|null $algo = PASSWORD_DEFAULT, array $options = []): string

password_hash tworzy bezpieczny skrót (hash) podanego hasła. Automatycznie generuje losową sól i włącza ją do wyniku — nie musisz jej przechowywać osobno. Wynikowy ciąg zawiera algorytm, koszt, sól i hash w jednym. PASSWORD_DEFAULT wybiera bcrypt w PHP 8 i będzie automatycznie wskazywać na lepszy algorytm w przyszłych wersjach PHP.

Nigdy nie używaj md5(), sha1() ani innych ogólnych funkcji skrótu do haseł — są zbyt szybkie i podatne na ataki tęczowych tablic.

<?php
declare(strict_types=1);

// Hashowanie hasła przy rejestracji:
$haslo     = 'SuperTajneHaslo99!';
$hashHasla = password_hash($haslo, PASSWORD_DEFAULT);

echo $hashHasla;
// wynik: $2y$12$... (60 znaków bcrypt — za każdym razem inny!)

// Ten sam ciąg wejściowy daje RÓŻNE hashe przy kolejnych wywołaniach:
$hash1 = password_hash($haslo, PASSWORD_DEFAULT);
$hash2 = password_hash($haslo, PASSWORD_DEFAULT);
var_dump($hash1 === $hash2); // wynik: bool(false)

// Sprawdzenie przez password_verify():
var_dump(password_verify($haslo, $hash1)); // wynik: bool(true)

// Zapis do bazy — potrzebujesz kolumny VARCHAR(255):
// INSERT INTO users (login, haslo_hash) VALUES (:login, :hash)
📘 Naucz się w lekcji →