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

Consigli

  • 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.

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.