PHP Password Hash

Genera hash bcrypt compatibili con password_hash() di PHP. Imposta il cost, genera l'hash e verifica le password. Tutto nel tuo browser.

Genera Hash (password_hash)

PASSWORD_BCRYPT(default in PHP)
10
4 (veloce)14 (sicuro)

Cost 10 = ~100ms, Cost 12 = ~300ms, Cost 14 = ~1s

Verifica Hash (password_verify)

Esempio codice PHP

<?php
// Genera hash
$password = "la_tua_password";
$hash = password_hash($password, PASSWORD_BCRYPT, ['cost' => 10]);
echo $hash;
// Output: $2y$10$...

// Verifica password
if (password_verify($password, $hash)) {
    echo "Password corretta!";
} else {
    echo "Password errata!";
}
?>

Domande Frequenti

Cosa fa password_hash in PHP?
password_hash() è una funzione PHP che crea un hash sicuro di una password usando algoritmi come bcrypt. È il metodo raccomandato per salvare password in modo sicuro nei database.
Cos'è il parametro "cost"?
Il cost determina quanto è computazionalmente costoso generare l'hash. Un valore più alto rende l'hash più sicuro ma più lento da calcolare. Il default è 10, che offre un buon bilanciamento tra sicurezza e performance.
Perché l'hash è diverso ogni volta?
Bcrypt genera automaticamente un "salt" casuale per ogni hash. Questo significa che la stessa password produce hash diversi, rendendo impossibile usare tabelle rainbow per craccare le password.
Come verifico una password hashata?
In PHP usa password_verify($password, $hash). Questa funzione confronta la password in chiaro con l'hash salvato e restituisce true se corrispondono.
Qual è la differenza tra $2y$ e $2a$?
$2y$ è il prefisso usato da PHP per bcrypt. $2a$ è il formato originale bcrypt. Sono essenzialmente equivalenti, ma PHP usa $2y$ per compatibilità.

Cos'è password_hash in PHP

password_hash() è la funzione raccomandata in PHP per creare hash sicuri delle password. Utilizza di default l'algoritmo bcrypt, che include automaticamente un salt casuale e supporta un parametro di costo configurabile.

Perché usare bcrypt

  • Salt automatico: Ogni hash include un salt unico
  • Resistente al brute-force: Il parametro cost rallenta gli attacchi
  • Ampiamente supportato: Standard de-facto per le password
  • Future-proof: Il cost può essere aumentato nel tempo

Formato dell'hash bcrypt

Un hash bcrypt ha questo formato:

$2y$10$N9qo8uLOickgx2ZMRZoMye.IjLHCR8RRxJZ1q3kMSPPB8z5EGHPVC
  • $2y$ - Identificatore algoritmo (bcrypt PHP)
  • 10$ - Cost factor (2^10 = 1024 iterazioni)
  • N9qo8uLOickgx2ZMRZoMye - Salt (22 caratteri)
  • .IjLHCR8RRxJZ1q3kMSPPB8z5EGHPVC - Hash (31 caratteri)

Best Practice

PraticaRaccomandazione
Cost minimo10 (default)
Cost consigliato12 per applicazioni critiche
StorageVARCHAR(255) nel database
Mai fareHashare password già hashate

Privacy e Sicurezza

Questo strumento esegue l'hashing interamente nel tuo browser usando la libreria bcryptjs. Le password non vengono mai inviate a server esterni, garantendo la massima privacy.