Generatore bcrypt — Crea e verifica hash di password con bcrypt

Calcola l'hash bcrypt di una password con il costo che scegli, verifica una password con un hash bcrypt e scopri cosa significa ogni parte dell'hash.

Genera un hash bcrypt

28 di 72 byte (UTF-8).
Ogni passo raddoppia il tempo. Per gli hash di login l'intervallo abituale è 10–12.

Verifica una password rispetto a un hash

Anatomia dell'hash
Versione$2b$2b — correzione di OpenBSD del 2014 per password più lunghe di 255 byte. Predefinita oggi in bcrypt (C/Python/Node).
Costo102^10 = 1024 round di espansione della chiave
SaltO.0JDwgDTALNNPsTWXP1YO22 caratteri = 128 bit casuali, Base64 di bcrypt
Hash2o9FuEFCZZMBsOKg910t7.RrUqVQsmW31 caratteri = 184 bit dell'output a 192 bit

Le password vengono elaborate e verificate nel tuo browser con bcryptjs. Nulla viene inviato, salvato o registrato. Evita comunque di incollare una password di produzione reale in qualsiasi pagina web. Sfoglia tutti gli strumenti gratuiti.

Hai trovato un problema o qualcosa che potrebbe andare meglio? Leggiamo ogni messaggio e sistemiamo le cose in fretta.

Questo generatore bcrypt calcola l'hash di una password con bcrypt usando un fattore di costo da 4 a 15, verifica una password con un hash bcrypt esistente e scompone un hash in versione, costo, salt e digest. È utile per creare un utente di prova, per controllare durante una migrazione che un hash nel database corrisponda a una password nota o per capire cosa significhi davvero $2b$12$. L'hashing avviene nel browser con bcryptjs, un'implementazione JavaScript compatibile con le librerie bcrypt usate da Node.js, PHP, Python, Ruby e Go. Per creare più account di prova, la modalità in blocco calcola l'hash di un elenco di massimo 50 password in una volta.

Bcrypt è lento di proposito, e ogni aumento di un'unità del costo raddoppia il tempo. Lo strumento mostra l'avanzamento mentre lavora e stima quanto richiederebbero altri fattori di costo sul tuo dispositivo, così vedi il compromesso prima di sceglierne uno per un server. Un'avvertenza che vale per qualsiasi strumento online: non incollare una password di produzione reale in una pagina web che non controlli. Usalo per valori di prova e per capire gli hash.

Come si usa

  1. Inserisci una password e scegli un fattore di costo; per i sistemi di login il valore tipico è tra 10 e 12.
  2. Premi Genera hash. Durante l'elaborazione compare una barra di avanzamento; con costo 14 o 15 può volerci qualche secondo.
  3. Copia l'hash di 60 caratteri. Generandolo di nuovo ottieni un hash diverso perché il salt è casuale; entrambi superano la verifica.
  4. Per controllare un hash, incollalo nella sezione di verifica insieme alla password da provare e premi Verifica.
  5. Leggi la tabella dell'anatomia dell'hash per vedere quale versione e quale costo usa.

Domande frequenti

Posso calcolare l'hash bcrypt di più password alla volta?

Sì. Passa a "Elenco di password (in blocco)", incolla fino a 50 password, una per riga (gli spazi contano; le righe vuote vengono saltate) e premi Genera hash. Vengono elaborate una dopo l'altra con il costo scelto, ciascuna con il proprio salt casuale, e la pagina resta reattiva durante il lavoro. Copia gli hash nello stesso ordine del tuo elenco oppure scarica un CSV, con o senza le password in chiaro. Il limite esiste perché bcrypt è volutamente lento: 50 hash con costo 12 richiedono già un po' di tempo.

Quale fattore di costo conviene usare per bcrypt?

Scegli il costo più alto che mantiene il calcolo di un singolo hash entro un ritardo accettabile sul server di produzione, di solito tra 100 ms e 1 secondo. Sull'hardware server attuale corrisponde in genere a un valore tra 10 e 12. Il Password Storage Cheat Sheet di OWASP fissa un fattore di lavoro minimo di 10. Misura sul server reale e non su un portatile, e ricorda che un costo elevato rende anche più facile sovraccaricare di richieste l'endpoint di login.

Perché la stessa password dà ogni volta un hash bcrypt diverso?

Ogni hash include un nuovo salt casuale a 128 bit, memorizzato nell'hash stesso (i 22 caratteri dopo il costo). È voluto: due utenti con la stessa password ottengono hash diversi e le tabelle precalcolate diventano inutili. Per controllare una password, bcrypt legge salt e costo dall'hash memorizzato, ricalcola l'hash della password da provare con quei valori e li confronta.

Un hash bcrypt si può decifrare?

No. Bcrypt è un hash unidirezionale, non una cifratura. L'unico modo per risalire a una password da un hash bcrypt è provare delle password candidate e calcolare l'hash di ciascuna, e il fattore di costo rende costoso ogni tentativo. È proprio questo lo scopo: una password debole può comunque essere indovinata, ma ogni tentativo richiede tempo di CPU reale anziché nanosecondi.

Che differenza c'è tra $2a$, $2b$ e $2y$?

Indicano revisioni dell'implementazione dell'algoritmo. $2a$ è stata a lungo la versione standard; $2b$ è stata introdotta da OpenBSD nel 2014 per correggere la gestione delle password oltre i 255 byte; $2y$ è il marcatore di PHP per gli hash prodotti dopo la correzione di un bug di estensione del segno nel 2011. Per gli hash creati dalle librerie attuali la verifica funziona allo stesso modo, e la maggior parte delle librerie accetta tutti e tre.

Esiste una lunghezza massima della password per bcrypt?

Sì. Bcrypt usa solo i primi 72 byte della password e ignora il resto, e il conteggio è in byte UTF-8, quindi una password con lettere accentate o emoji raggiunge il limite con meno caratteri. Questo strumento ti avvisa quando superi i 72 byte. Se devi accettare passphrase più lunghe, limitane la lunghezza oppure usa Argon2id, che non ha questo limite.

Meglio bcrypt o Argon2?

Per un sistema nuovo OWASP raccomanda in primo luogo Argon2id, perché è memory-hard e quindi più costoso da attaccare con le GPU. Bcrypt resta una scelta solida e supportata ovunque, e un sistema che usa già bcrypt con un costo di 10 o più non ha bisogno urgente di cambiare. Ciò che conta di più è usare uno di questi algoritmi lenti e con salt, e non un semplice SHA-256 o MD5.

Anatomia di un hash bcrypt

Un hash bcrypt come $2b$12$R9h/cIPz0gi.URNNX3kh2OPST9/PgBkqquzi.Ss7KIUgO2t0jWMUW è sempre lungo 60 caratteri e contiene tutto ciò che serve per verificarlo:

• $2b$: la versione dell'algoritmo.

• 12$: il fattore di costo. La preparazione della chiave viene eseguita 2^12 = 4.096 volte.

• R9h/cIPz0gi.URNNX3kh2O: 22 caratteri che codificano il salt casuale a 128 bit.

• PST9/PgBkqquzi.Ss7KIUgO2t0jWMUW: 31 caratteri che codificano 184 bit del risultato.

La codifica usa l'alfabeto Base64 proprio di bcrypt (./A–Z a–z 0–9), diverso dall'alfabeto Base64 standard, quindi le parti non si possono decodificare con un normale decodificatore Base64.

Perché gli hash veloci sono sbagliati per le password

Gli hash generici come SHA-256 sono progettati per essere veloci, e una GPU moderna ne calcola miliardi al secondo. Se trapela un database di hash di password SHA-256, tutte le password comuni e gran parte di quelle brevi cadono nel giro di ore. Aggiungere un salt blocca le tabelle precalcolate ma non rallenta i tentativi.

Bcrypt risolve il problema rendendo ogni hash volutamente costoso e regolabile. Con costo 12 un hash richiede nell'ordine di un quarto di secondo su un tipico core di un server, circa un milione di volte più di un singolo SHA-256 sullo stesso core, e lo schema di accesso alla memoria di bcrypt lo rende anche poco efficiente sulle GPU. Man mano che l'hardware diventa più veloce, aumenti il costo; gli hash esistenti si possono aggiornare al successivo login di ogni utente.

L'hashing è solo un livello di protezione. Limita la frequenza dei tentativi di login, controlla le nuove password con gli elenchi di password violate come raccomanda NIST SP 800-63B e offri l'autenticazione a due fattori, così che una password indovinata da sola non basti.

Strumenti gratuiti correlati

  • Generatore di password — Genera una password casuale sicura, una passphrase facile da ricordare o un PIN. Funziona interamente nel browser: nulla viene inviato o salvato.
  • Generatore di hash — Calcola l'hash di testo o file con MD5, SHA-1, SHA-256, SHA-384, SHA-512 e CRC32, verifica un checksum o calcola un HMAC. I file non lasciano mai il tuo dispositivo.
  • Generatore TOTP — Trasforma un segreto Base32 in codici 2FA in tempo reale con conto alla rovescia, crea un codice QR otpauth:// per le app di autenticazione o leggi un URI esistente.
  • Decoder JWT — Decodifica header e payload di un JWT, leggi la scadenza in parole semplici, verifica firme HS, RS, PS ed ES o firma un nuovo token. Nulla esce dal browser.