Verifica bcrypt | Controlla gratis se una password corrisponde all'hash

Verifica all'istante e gratuitamente se la password inserita corrisponde a un hash bcrypt. Funziona con lo stesso meccanismo di password_verify() di PHP, quindi si presta al collaudo e al debug delle procedure di accesso, e supporta sia il formato $2a$ sia $2b$.

Hash
Testo

Corrisponde

Non corrisponde

Che cos'è la verifica BCrypt?

Questo strumento controlla se una password in chiaro che inserite e un hash BCrypt esistente siano stati generati dalla stessa stringa originale. Funziona sullo stesso principio della funzione password_verify() di PHP, quindi serve a confermare un'implementazione di accesso e a cercarvi errori.

Un hash BCrypt porta il proprio sale al suo interno, ed è per questo che generarne uno dalla stessa password produce ogni volta una stringa diversa. Un semplice confronto tra stringhe non può quindi stabilire la corrispondenza: il sale va estratto con l'algoritmo dedicato prima del confronto, e di questo passaggio si occupa questo strumento al posto vostro.

Come si usa la verifica BCrypt

  1. Inserite la stringa Digitate nel campo la password in chiaro che volete verificare.
  2. Inserite l'hash Incollate un hash BCrypt che inizi con $2a$ oppure $2b$.
  3. Premete il pulsante di verifica Il risultato — corrispondenza o meno — compare all'istante.

Consigli per sfruttarlo al meglio

  • bcrypt incorpora il sale al proprio interno: anche se l'hash è diverso a ogni generazione, se deriva dallo stesso testo la verifica dà esito positivo.
  • La verifica usa lo stesso meccanismo di password_verify($password, $hash) di PHP.
  • Quando confrontate un hash letto dal database con la password inserita, non usate il normale confronto fra stringhe (==) ma la funzione di verifica dedicata, per prevenire gli attacchi temporali.
  • Anche gli hash che iniziano con $2a$ sono verificabili come bcrypt.

Quando la verifica BCrypt torna utile

Fare il debug di un flusso di accesso

Controllate direttamente se un hash conservato nel database corrisponde alla password attesa, senza passare per il codice della vostra applicazione.

Confermare il comportamento dopo un reimpostazione della password

Provate se un hash generato da una nuova password corrisponde al testo in chiaro previsto.

Verificare gli hash durante una migrazione

Confermate in anticipo che gli hash BCrypt trasferiti da un altro sistema funzioneranno ancora.

Glossario BCrypt

Sale
Una stringa casuale aggiunta al momento di generare l'hash. È ciò che fa sì che la stessa password produca ogni volta un hash diverso.
password_verify()
La funzione standard di PHP per confrontare in sicurezza una password in chiaro con un hash. Estrae il sale automaticamente, al proprio interno.
Attacco temporale
Un attacco che deduce informazioni segrete da minime differenze nel tempo di elaborazione. Usare una funzione dedicata che confronta a tempo costante lo impedisce.
$2a$ / $2b$
I prefissi che indicano la versione di un hash BCrypt. $2b$ è la versione che ha corretto un difetto di un'implementazione più vecchia ed è quella raccomandata oggi.

Domande frequenti

bcrypt incorpora nell'hash un sale casuale. In fase di verifica il sale viene estratto dall'hash e usato per calcolare l'hash del testo inserito: il confronto riesce quindi anche con hash sempre diversi.

Sono compatibili fra loro e questo strumento li verifica entrambi. $2b$ corregge un difetto delle implementazioni precedenti ed è oggi la variante consigliata.

No. bcrypt è una funzione hash a senso unico e recuperare la password dall'hash è computazionalmente impossibile. Lo strumento verifica soltanto se c'è corrispondenza e non offre alcuna funzione per estrarre il valore originale.
Tool-kun

A proposito — che cosa succede in quel mezzo secondo dopo il login

Dal momento in cui premete «Accedi» a quello in cui compare la risposta passa qualche decimo di secondo. Parte di quel tempo è occupata da bcrypt che calcola l'hash della password: la lentezza è voluta, ed è una misura di sicurezza.

L'attacco temporale è un attacco a canale laterale che deduce informazioni segrete misurando differenze minime nei tempi di elaborazione. Con un normale confronto fra stringhe (==) il tempo varia leggermente a seconda di quanti caratteri iniziali coincidono. La funzione di verifica di bcrypt è invece progettata per impiegare un tempo costante ed è quindi immune a questo attacco.

Nelle applicazioni web reali si raccomanda di rispondere impiegando lo stesso tempo anche quando l'utente non esiste, come se esistesse ma con password errata. Poter distinguere «utente inesistente» da «password errata» darebbe infatti a un attaccante un indizio prezioso per individuare i nomi utente validi.