Skip to content

Generatore e verificatore di hash Bcrypt

Genera e verifica hash bcrypt delle password online: costo regolabile, prefissi $2b$/$2a$/$2y$. 100% nel tuo browser; la password non viene mai caricata.

Niente tracciamento Funziona nel browser Gratuito
100% nel tuo browser — la password non lascia mai il tuo dispositivo.
Hash bcrypt
Anatomia dell'hash
Versione
Costo
Sale
Digest

Segue il comportamento di riferimento di bcrypt con output confrontato con Node bcrypt, Python bcrypt e Apache htpasswd — Team Sicurezza di Go Tools · Jun 12, 2026

Cos'è Bcrypt?

Bcrypt è una funzione di hashing delle password progettata specificamente per memorizzare le password in modo sicuro. Invece di conservare una password in chiaro, un server memorizza un hash bcrypt a senso unico; quando un utente effettua il login, il server esegue l'hashing della password inviata nello stesso modo e verifica che i due hash coincidano. Bcrypt è costruito sul cifrario Blowfish ed è stato progettato da Niels Provos e David Mazières nel 1999, con una caratteristica deliberata che lo distingue dagli hash generici come SHA-256: è lento di proposito, e puoi renderlo più lento nel tempo con un fattore di costo regolabile man mano che l'hardware diventa più veloce.

Un hash bcrypt è un'unica stringa auto-descrittiva di 60 caratteri — ad esempio $2b$12$dUSFKqT1FCMYZ6hcQfsxuONizEqcX8IGK8snfVSowP5Uu.TDJoPUq. Racchiude quattro parti: la versione ($2b$), il costo (12, un work factor logaritmico), un sale Base64 di 22 caratteri e il digest Base64 di 31 caratteri. Poiché il sale è casuale e incorporato nell'hash, la stessa password produce un hash diverso ogni volta, il che vanifica le rainbow table e nasconde il fatto che due utenti abbiano scelto la stessa password. La verifica rilegge il sale e il costo dall'hash memorizzato e ricalcola l'hash del candidato, quindi bcrypt non ha mai bisogno (e non è in grado) di invertire un hash per recuperare la password.

Questo strumento viene eseguito interamente nel tuo browser usando un'implementazione bcrypt integrata: nessuna password o hash viene mai caricata. Usalo per generare un hash con un costo e un prefisso a scelta, per verificare una password rispetto a un hash esistente e per leggere l'anatomia di un hash. Si abbina naturalmente ad altri strumenti di sicurezza: proteggi una directory con HTTP Basic Auth usando il nostro Generatore htpasswd (che può emettere voci bcrypt direttamente), crea una password robusta da sottoporre a hash con il nostro Generatore di password casuali, e ricorri al nostro Generatore SHA-256 quando hai bisogno di un checksum generico veloce anziché di un lento hash di password. Se stai decidendo con quale algoritmo memorizzare le password, confronta le opzioni in bcrypt vs Argon2 vs scrypt.

// Node.js — bcryptjs / bcrypt (emits $2b$)
const bcrypt = require('bcrypt');
const hash = await bcrypt.hash('correct horse battery staple', 12);
// -> $2b$12$dUSFKqT1FCMYZ6hcQfsxuONizEqcX8IGK8snfVSowP5Uu.TDJoPUq
const ok = await bcrypt.compare('correct horse battery staple', hash); // true

# Python — bcrypt
import bcrypt
hashed = bcrypt.hashpw(b'correct horse battery staple', bcrypt.gensalt(12))
bcrypt.checkpw(b'correct horse battery staple', hashed)  # True

# PHP — password_hash (emits $2y$)
$hash = password_hash('correct horse battery staple', PASSWORD_BCRYPT, ['cost' => 12]);
password_verify('correct horse battery staple', $hash); // true

# Apache htpasswd CLI — bcrypt entry to stdout (-B bcrypt, -b inline, -n stdout)
htpasswd -Bbn admin 'correct horse battery staple'
# -> admin:$2y$12$dUSFKqT1FCMYZ6hcQfsxuONizEqcX8IGK8snfVSowP5Uu.TDJoPUq

Caratteristiche principali

Genera hash Bcrypt

Produci un hash bcrypt standard di 60 caratteri da qualsiasi password con un nuovo sale casuale. Ogni clic genera un hash valido diverso, esattamente come farebbe un vero archivio di password.

Fattore di costo regolabile

Regola il work factor da 4 a 15 (12 è il valore predefinito moderno). Senti come ogni passo raddoppia all'incirca il tempo di calcolo, così puoi scegliere un costo robusto ma abbastanza veloce per il login.

Scegli il prefisso di versione

Emetti $2b$ (l'attuale standard di bcryptjs), $2y$ (PHP / Apache htpasswd) o $2a$ (l'originale). Sono tutti intercambiabili per la verifica tra le librerie.

Verifica una password rispetto a un hash

Incolla un hash memorizzato e una password candidata per confermare all'istante se corrispondono — ricalcolando l'hash con il sale e il costo incorporati, senza mai decifrare. Ideale per il debug di un login fallito.

Analisi dell'anatomia dell'hash

Vedi qualsiasi hash bcrypt scomposto in versione, costo, sale e digest, così la struttura della stringa $2b$12$... è ovvia a colpo d'occhio.

100% lato client

Tutto l'hashing e la verifica avvengono localmente nel tuo browser. Nessuna password o hash viene mai inviata a un server, così puoi lavorare con credenziali reali in modo privato.

Esempi del generatore Bcrypt

hash bcrypt (costo 12, $2b$)

password: correct horse battery staple
costo: 12
prefisso: $2b$
$2b$12$dUSFKqT1FCMYZ6hcQfsxuONizEqcX8IGK8snfVSowP5Uu.TDJoPUq

Un hash bcrypt con costo 12 e prefisso $2b$. Il sale è casuale, quindi la stessa password produce un hash diverso ogni volta, eppure tutti vengono verificati correttamente rispetto alla password originale.

Verifica una password rispetto a un hash

password: correct horse battery staple
hash: $2b$12$dUSFKqT1FCMYZ6hcQfsxuONizEqcX8IGK8snfVSowP5Uu.TDJoPUq
✓ Corrispondenza — la password è corretta per questo hash

La verifica non decifra l'hash. bcrypt esegue di nuovo l'hashing della password candidata usando il sale e il costo incorporati nell'hash memorizzato, poi confronta il risultato. Una corrispondenza significa che la password è corretta.

Analisi dell'anatomia di un hash

$2b$12$dUSFKqT1FCMYZ6hcQfsxuONizEqcX8IGK8snfVSowP5Uu.TDJoPUq
versione: $2b$ · costo: 12 · sale: dUSFKqT1FCMYZ6hcQfsxuO · digest: NizEqcX8IGK8snfVSowP5Uu.TDJoPUq

Ogni hash bcrypt si auto-descrive: un'etichetta di versione, un costo a due cifre, un sale Base64 di 22 caratteri e un digest Base64 di 31 caratteri, tutto in un'unica stringa di 60 caratteri. Lo strumento li separa così puoi leggerli a colpo d'occhio.

Come usare il generatore Bcrypt

  1. 1

    Inserisci una password e scegli il costo

    Nella scheda Genera, digita una password o fai clic su Password casuale. Scegli un fattore di costo (4–15; 12 è il valore predefinito moderno) e un prefisso di versione — $2b$, $2a$ o $2y$ — per adattarlo al tuo stack.

  2. 2

    Genera l'hash

    L'hash bcrypt viene calcolato localmente con un nuovo sale casuale e appare come un'unica stringa di 60 caratteri $2b$12$.... Fai clic su Copia per prelevarlo, oppure rigenera per un nuovo hash con sale.

  3. 3

    Leggi l'anatomia o verifica

    Il pannello dell'anatomia scompone l'hash in versione, costo, sale e digest. Passa alla scheda Verifica per incollare un hash memorizzato e una password e confermare all'istante se corrispondono.

Common Errors

Provare a decifrare un hash

Bcrypt è a senso unico; non esiste alcuna decifratura. Per controllare una password, verificala rispetto all'hash invece di tentare di invertire il digest.

✗ Errato
bcrypt.decrypt(hash)  // no such operation
✓ Corretto
bcrypt.compare(password, hash)  // returns true / false

Impostare il costo troppo basso

Un costo basso come 4 o 6 calcola l'hash quasi all'istante, il che permette anche agli attaccanti di forzare velocemente gli hash trafugati. Usa 12 come baseline.

✗ Errato
cost: 4  // far too fast, weak against brute force
✓ Corretto
cost: 12  // modern default, resists brute force

Aspettarsi lo stesso hash due volte

Poiché il sale è casuale, eseguire di nuovo l'hashing della stessa password produce una stringa diversa. Confronta con la verifica, mai controllando l'uguaglianza byte per byte di due hash.

✗ Errato
hash(pw) === storedHash  // fails — different salts
✓ Corretto
bcrypt.compare(pw, storedHash)  // correct check

Casi d'uso comuni

Popolare un hash di password in un database
Genera un hash bcrypt per un account amministratore o di prova e inseriscilo direttamente nella tua tabella utenti, così puoi accedere senza dover prima predisporre un intero flusso di registrazione.
Eseguire il debug di un login che fallisce
Verifica una password notoriamente corretta rispetto all'hash memorizzato per confermare se l'hash stesso è corretto, isolando il bug dal tuo codice di autenticazione.
Scegliere il fattore di costo giusto
Genera a diversi livelli di costo sul tuo hardware per sentire quanto tempo impiega ciascuno, poi scegli un work factor che resista al brute force senza rallentare i login reali.
Creare voci htpasswd / Basic Auth
Produci un hash bcrypt $2y$ per una credenziale Apache, Docker Registry o Caddy, poi inseriscilo in una riga utente:hash per l'HTTP Basic Auth.
Costruire fixture di test
Crea hash bcrypt deterministici a parità di password per popolare i test di integrazione di un flusso di login o di reimpostazione password senza avviare un vero server di autenticazione.
Verificare un hash trovato
Leggi l'anatomia di una stringa bcrypt in una configurazione o in un dump per controllarne il fattore di costo, e verificala rispetto alla password che ti aspetti per confermare una corrispondenza.

Dettagli tecnici

Basato su Blowfish, costo adattivo
Bcrypt ricava il suo hash dall'oneroso key setup del cifrario Blowfish, ripetuto 2^costo volte. Aumentare il costo di uno raddoppia il lavoro, mantenendo la funzione lenta contro il brute force man mano che l'hardware migliora.
Sale casuale a 128 bit
Ogni hash incorpora un sale casuale di 16 byte (128 bit), codificato in Base64 come 22 caratteri dopo il costo. Il sale rende ogni hash unico, così password identiche non condividono mai un digest e le rainbow table non si applicano.
Formato auto-descrittivo di 60 caratteri
L'output è $versione$costo$sale+digest — una stringa fissa di 60 caratteri che contiene tutto il necessario per verificarla. Non serve una colonna del sale separata né un archivio di parametri.
Limite di 72 byte sulla password
Bcrypt esegue l'hashing solo dei primi 72 byte di una password; qualsiasi cosa oltre viene ignorata in silenzio. Per passphrase molto lunghe, il pre-hashing (ad esempio con SHA-256) prima di bcrypt è una mitigazione comune.
Verifica, non decifrare
Bcrypt è a senso unico. La verifica riesegue l'hash sulla password candidata usando il sale e il costo estratti dall'hash memorizzato, poi confronta i digest a tempo costante. Non esiste alcuna operazione che recuperi il testo in chiaro.
Note di trasparenza e avvertenze
Gli hash vengono calcolati localmente e non vengono mai confrontati con un sistema reale. Gli hash copiati e qualsiasi password digitata risiedono nei tuoi appunti e nella memoria del browser: trattali come segreti e svuota gli appunti dopo averli incollati in produzione.

Buone pratiche

Usa un costo 12 o superiore
Il costo 12 è la baseline moderna; alzalo verso 14 per i sistemi sensibili finché la latenza del login resta accettabile. Rivaluta periodicamente: ciò che era abbastanza lento cinque anni fa oggi è economico da attaccare.
Non memorizzare né registrare mai il testo in chiaro
Memorizza solo l'hash bcrypt, mai la password originale, e tieni le password fuori dai log e dai messaggi di errore. L'intero valore di bcrypt si perde se il testo in chiaro trapela insieme ad esso.
Lascia che sia bcrypt a gestire il sale
Bcrypt genera e incorpora un sale casuale sicuro per te. Non fornire il tuo sale statico e non riutilizzarne uno: un sale casuale per ogni hash è ciò che vanifica le rainbow table.
Attenzione al limite di 72 byte
Se accetti passphrase lunghe, ricorda che bcrypt ignora i byte oltre 72. Considera il pre-hashing con SHA-256, oppure valuta Argon2id, quando input molto lunghi devono essere coperti per intero.

FAQ sul generatore Bcrypt

È sicuro usare un generatore bcrypt online?
Con questo sì, perché nulla di ciò che digiti lascia mai il tuo browser. La password, l'hash generato e la verifica vengono eseguiti tutti localmente in JavaScript sul tuo stesso dispositivo. Non ci sono richieste di rete, nessun log e nessuna memorizzazione: puoi confermarlo aprendo gli Strumenti per sviluppatori del browser (F12 → scheda Network) mentre generi un hash e osservando zero richieste in uscita, oppure scollegandoti da internet e vedendo che lo strumento continua a funzionare. È l'opposto di un generatore poco affidabile che invia la tua password a un server con una POST. Come buona abitudine, preferisci comunque una password di prova usa e getta a una reale di produzione quando stai solo sperimentando.
Come si genera un hash bcrypt online?
Apri la scheda Genera, digita una password (o fai clic su Password casuale per crearne una robusta), scegli un fattore di costo — 12 è il valore predefinito moderno — e seleziona un prefisso di versione: $2b$ per la maggior parte degli stack moderni, $2y$ per PHP e Apache, oppure $2a$ per l'identificatore originale. L'hash bcrypt viene calcolato all'istante nel tuo browser con un nuovo sale casuale e appare come un'unica stringa di 60 caratteri $2b$12$... che puoi copiare con un clic. Nulla viene caricato: la password e l'hash non lasciano mai il tuo dispositivo. Genera di nuovo in qualsiasi momento per ottenere un altro hash valido per la stessa password, dato che ognuno porta con sé un sale casuale diverso.
Un hash bcrypt può essere decifrato o invertito?
No. bcrypt è una funzione di hashing delle password a senso unico, non una cifratura, quindi non esiste alcuna chiave né alcuna operazione di decifratura che riporti un hash alla password originale. L'unico modo per risalire alla password partendo da un hash è provare candidati e calcolarne l'hash uno per uno finché non coincide, ed è esattamente ciò che il fattore di costo regolabile di bcrypt è progettato per rendere lento e costoso. Ecco perché si verifica una password rispetto a un hash invece di decifrarla: lo strumento esegue di nuovo l'hashing del candidato con il sale e il costo memorizzati nell'hash e controlla se il risultato è identico.
Quale fattore di costo (work factor) dovrei usare?
Il costo 12 è il valore predefinito moderno e un equilibrio sensato tra sicurezza e velocità. Il costo è un work factor logaritmico: ogni incremento raddoppia il numero di round interni, quindi il costo 13 impiega all'incirca il doppio del tempo per calcolare e verificare rispetto al costo 12, e il costo 11 ne impiega la metà. Costi più alti rallentano gli attaccanti che provano a forzare hash trafugati, ma aggiungono anche latenza a ogni login legittimo, quindi non superare il punto in cui l'autenticazione risulta lenta sul tuo hardware reale. Il costo 10 è accettabile per endpoint a basso rischio; 12–14 si adatta a tutto ciò che è sensibile. L'intervallo valido va da 4 a 31, e questo strumento ti permette di scegliere da 4 a 15.
Qual è la differenza tra $2a$, $2b$ e $2y$?
Sono prefissi di versione per lo stesso algoritmo bcrypt, e le differenze risalgono a correzioni storiche di bug nel modo in cui alcune implementazioni gestivano la lunghezza delle stringhe e i caratteri con bit alto. $2a$ è l'identificatore originale ampiamente usato; $2b$ è la versione corretta e attuale che la libreria bcryptjs e la maggior parte delle implementazioni moderne producono; e $2y$ è l'identificatore usato da PHP e da htpasswd di Apache. Per la verifica sono intercambiabili: un hash che generi qui con qualsiasi prefisso verrà convalidato correttamente tra le librerie, perché tutte eseguono la stessa funzione di base. Scegli il prefisso che il tuo stack si aspetta se hai bisogno di compatibilità byte per byte.
Come verifico una password rispetto a un hash bcrypt?
Passa alla scheda Verifica, incolla l'hash bcrypt memorizzato (la stringa completa $2b$12$...) e la password candidata, e lo strumento ti dice all'istante se corrispondono. Funziona estraendo il sale e il costo incorporati nell'hash, ricalcolando l'hash della password candidata con quegli esatti parametri e confrontando il nuovo digest con quello memorizzato: non c'è alcuna decifratura coinvolta. È così che un sistema di login controlla una password: non recupera mai il testo in chiaro, conferma soltanto che ricalcolare l'hash della password inviata riproduce l'hash memorizzato.
bcrypt vs Argon2 vs scrypt — quale dovrei usare?
Tutti e tre sono funzioni di hashing delle password volutamente lente e con sale, e tutte sono di gran lunga migliori di un semplice SHA-256 per memorizzare le password. bcrypt è la più supportata e collaudata, con un costo regolabile e semplice; i suoi limiti principali sono il tetto di 72 byte sulla password e il fatto che sia legato solo alla CPU. scrypt aggiunge la durezza in memoria, rendendo più costosi gli attacchi su larga scala con GPU/ASIC. Argon2 (in particolare Argon2id) è la raccomandazione attuale della Password Hashing Competition e di OWASP, e regola tempo, memoria e parallelismo in modo indipendente. Se stai scegliendo da zero oggi, Argon2id è il valore predefinito più robusto; bcrypt resta una scelta eccellente e sicura, soprattutto dove contano il supporto delle librerie o l'interoperabilità. Approfondiamo i compromessi in bcrypt vs Argon2 vs scrypt.
Perché l'hash bcrypt è diverso ogni volta?
Perché bcrypt genera un nuovo sale casuale per ogni hash, e il sale viene mescolato prima dell'hashing. La stessa password produce quindi una stringa di 60 caratteri completamente diversa ogni volta che fai clic su Genera, ed è proprio questo il punto: impedisce agli attaccanti di precalcolare le rainbow table o di notare che due utenti condividono una password. Il sale non è segreto; è memorizzato proprio dentro l'hash (i 22 caratteri dopo il costo), così la verifica può rileggerlo. Se rigeneri l'hash ottieni semplicemente un altro hash valido per la stessa password, e ognuno di essi verrà verificato con successo.

Strumenti correlati

Vedi tutti gli strumenti →