password_get_info în PHP

Arată cu ce algoritm și cu ce opțiuni (cost, memorie) a fost creat un hash de parolă.

Sintaxă
password_get_info(string $hash): array

Ce face password_get_info

password_get_info citește începutul unui hash creat de password_hash și returnează un tablou cu cheile algo (identificatorul, de exemplu "2y"), algoName ("bcrypt", "argon2id") și options (costul la bcrypt; memoria, timpul și firele la Argon2).

Pentru un text care nu este hash cunoscut, algo este null și algoName este "unknown". Este util pentru statistici (câți utilizatori au încă hash-uri vechi) sau depanare.

Parametri

Parametru Descriere
$hash Hash-ul analizat.

Ce returnează

Un tablou cu cheile algo, algoName și options.

Exemple

Exemplul 1: Bcrypt cu cost 10 și text oarecare

<?php
print_r(password_get_info(password_hash("parola", PASSWORD_BCRYPT, ["cost" => 10])));
print_r(password_get_info("nu este un hash"));

Rezultat

Array
(
    [algo] => 2y
    [algoName] => bcrypt
    [options] => Array
        (
            [cost] => 10
        )

)
Array
(
    [algo] => 
    [algoName] => unknown
    [options] => Array
        (
        )

)

Exemplul 2: Argon2id

<?php
$hash = password_hash("parola", PASSWORD_ARGON2ID);

$info = password_get_info($hash);
echo $info["algoName"] . "\n";
print_r($info["options"]);

Rezultat

argon2id
Array
(
    [memory_cost] => 65536
    [time_cost] => 4
    [threads] => 1
)

Greșeli frecvente

  • Folosești password_get_info ca să decizi dacă refaci hash-ul. Pentru asta există password_needs_rehash, care compară direct cu setările curente.

Comenzi înrudite

  • password_hash: Creează un hash sigur pentru o parolă, gata de salvat în baza de date. Este modul corect de a stoca parole.
  • password_needs_rehash: Verifică dacă un hash de parolă a fost creat cu alt algoritm sau alt cost decât cele actuale și trebuie refăcut.
  • password_algos: Returnează identificatorii algoritmilor de hash pentru parole disponibili pe server (de exemplu 2y, argon2id).