Vai al contenuto

Verifica di bcrypt e argon2

bcrypt & argon2 Checker

Calcola l’hash di una password con bcrypt al costo che scegli e confronta una password con un hash bcrypt esistente. Riconosce argon2 ma non lo calcola.

Calcola l’hash di una password con bcrypt, oppure verifica una password contro un hash `$2a$`/`$2b$`/`$2y$` esistente. L’implementazione è il `$2b$` di OpenBSD, verificato sui vettori crypt_blowfish pubblicati da Openwall, e gira in un worker in questa scheda.

🔒 Funziona interamente nel tuo browserbcryptargon2passwordhash
Modalità

Elaborata solo in questa scheda; non viene trasmesso niente.

Costo

1024 round — il valore predefinito di sempre.

Questo è bcrypt come lo definisce OpenBSD $2b$, verificato sui vettori di test pubblicati di Openwall crypt_blowfish e in esecuzione interamente in questa scheda. Contano solo i primi 72 byte di una password — è bcrypt che funziona così, non un difetto di qui. Gli hash $2x$ (prodotti da un bug di crypt_blowfish anteriore al 2011) vengono rifiutati, e argon2 non è implementato.

Come si usa

  1. Scegliere fra calcolo dell’hash e verifica

    Il calcolo dell’hash ha bisogno di un costo; la verifica legge il costo dall’hash incollato, perché è conservato nella stringa.

  2. Scegliere un costo che ci si può permettere

    Ogni passo raddoppia il lavoro. 10 è stato per anni il valore predefinito, 12 è una scelta solida oggi, e 14 in un browser richiede qualche secondo ben visibile — che è proprio il punto: anche a chi attacca costa lo stesso tempo.

  3. Leggere il verdetto

    Corrisponde oppure no. Tutto avviene nella scheda, quindi un hash di produzione incollato qui non va da nessuna parte.

Domande frequenti

Perché argon2 viene rifiutato invece che supportato?

Perché un argon2 affidabile in un browser vorrebbe dire distribuire una build WebAssembly che questo progetto non può verificare riga per riga. Qui bcrypt è implementato in codice che si può leggere, controllato su vettori pubblicati. Rifiutare un hash argon2 è più onesto di una risposta dall’aria plausibile che esce da una scatola nera.

Perché la mia password lunga viene verificata contro l’hash sbagliato?

bcrypt legge soltanto i primi 72 byte. Due password che condividono i primi 72 byte per lui sono la stessa password: è bcrypt in sé, non questa implementazione. Conta per una passphrase, ed è una delle ragioni per cui si passa ad argon2.

Perché calcolare due volte l’hash della stessa password dà stringhe diverse?

Perché ogni esecuzione genera un salt nuovo da 16 byte, e il salt viaggia dentro l’hash. Entrambe le stringhe verificano la stessa password. Un hash di password uguale ogni volta è un hash di password senza salt, che è proprio la cosa per cui sono state costruite le rainbow table.

$2a$, $2b$ e $2y$ sono diversi?

Non per una password di 72 byte o meno, cioè per tutte. I prefissi registrano prima o dopo quale bug storico è stato prodotto un hash. `$2x$` è l’eccezione: segna gli hash prodotti da un bug di crypt_blowfish precedente al 2011, e qui vengono rifiutati.

Può ricevere da

Dopo

Questi accettano ciò che produce questo strumento, così il risultato può passare direttamente.