Generatore e verificatore di hash Bcrypt
Trasforma una password in un hash bcrypt $2b$, oppure verifica una password rispetto a un hash che hai già. L'hashing viene eseguito in un Web Worker all'interno del tuo browser — nulla di ciò che digiti viene inviato altrove.
Non incollare una vera password di produzione in nessuno strumento online — questo incluso.
Input
Password e cost
Per ogni hash viene generato un nuovo salt di 16 byte, quindi la stessa password produce un hash diverso ogni volta. Questo è lo scopo di un salt, non un bug.
Cost 10 significa 2^10 = 1,024 round di key-setup. Ogni passo in più raddoppia il lavoro — sia per chi sta forzando un file di password rubato, sia per il tuo stesso server a ogni singolo login. La maggior parte dei sistemi in produzione si colloca tra 10 e 12.
I tre prefissi producono byte hash identici per password sotto i 72 byte; cambia solo l'etichetta. Il crypt() incluso in PHP non riconosce $2b$, quindi un hash $2b$ farà fallire silenziosamente password_verify(). Scegli $2y$ per PHP.
L'hashing viene eseguito in un Web Worker all'interno di questa scheda. La password non viene mai inviata a Wespner o a chiunque altro — non c'è alcuna richiesta che la invii.
Risultato
hash bcrypt
Premi “Genera hash”.
Costo, misurato qui
Cosa ti costa questa impostazione
Stima: un hash viene cronometrato in questa scheda a cost 8 e ogni altro cost viene estrapolato raddoppiando. È il tuo hardware e il tuo browser a decidere il numero.
Quei numeri sono per un solo thread JavaScript. Un vero aggressore esegue codice nativo su un rack di GPU ed è ordini di grandezza più veloce — è proprio questo divario il motivo per cui il cost factor deve essere scomodo invece che comodo. Lo stesso slider decide anche quanta CPU consuma ogni tuo login.
Lettura della stringa
Cosa significano i 60 caratteri
$2b$12$LQv3c1yqBWVHxkd0LHAkCOYUtYgBuLIjrsGrDUgYqZbY7d0RfPbtq
Entrambi i blocchi usano l'alfabeto base64 proprio di bcrypt, che inizia con ./ e mette le cifre per ultime — non è base64 standard, e decodificarlo come tale dà i byte sbagliati. Questo, più la suddivisione 22/31, è un modo rapido per verificare che una stringa sia davvero un hash bcrypt e non qualcosa che gli somiglia soltanto.
Scegliere un algoritmo
bcrypt, scrypt o Argon2?
Questo strumento è volutamente solo bcrypt. Ecco quando è la scelta giusta e quando non lo è.
Lento per progettazione, ma sfrutta solo tempo di CPU e 4 KB fissi di memoria. GPU e FPGA lo parallelizzano molto meglio rispetto ai design più recenti. Resta comunque una scelta rispettabile, è supportato letteralmente ovunque, e il suo limite di 72 byte per la password è il suo aspetto più sorprendente.
Aggiunge un costo di memoria regolabile, quindi un aggressore ha bisogno di RAM per ogni tentativo, non solo di core. Più difficile da parallelizzare a basso costo rispetto a bcrypt.
Vincitore della Password Hashing Competition del 2015 e ciò che OWASP consiglia ora per i nuovi sistemi: parametri separati per tempo, memoria e parallelismo, con la variante id che resiste sia ad attacchi GPU sia a side-channel. Se stai partendo da zero e la tua piattaforma lo supporta, usalo. Se mantieni qualcosa che già memorizza hash $2y$, bcrypt con un cost sensato non è un'emergenza — riesegui l'hashing al prossimo login.
Prova
Verifica questa pagina rispetto ai vettori di test pubblicati
Uno strumento di hashing che chiede fiducia dovrebbe essere verificabile. Questi sono i vettori bcrypt di riferimento usati dalle implementazioni derivate da OpenBSD; la pagina ricalcola ciascuno a partire dal proprio salt e li confronta carattere per carattere, poi genera e riverifica una password usa e getta a due cost factor diversi.
Il batch esegue 6 vettori pubblicati più due round trip.
Gestisci un tuo server di gioco?
Server di gioco Wespner con protezione DDoS, dischi NVMe e attivazione in pochi minuti.