Generatore Bcrypt
Create un hash bcrypt della password con un salt casuale di 16 byte e un fattore di costo da 4 a 12. Lo strumento restituisce la stringa modulare standard per la crittografia, che inizia con $2a$ e che PHP password_verify, Node.js bcrypt, Spring Security e la maggior parte dei framework accettano. Usatela per creare utenti di test, reimpostare la password di un amministratore nel database o verificare il vostro codice di hashing. La password non viene mai mostrata né memorizzata.
Domande frequenti
Che cos’è bcrypt?
Bcrypt è una funzione di hashing delle password di 1999 basata sul cifrario Blowfish. Combina un salt casuale con un costo regolabile, perciò ogni incremento del costo raddoppia il lavoro necessario a un attaccante per ogni tentativo. Rimane una scelta ampiamente supportata per la memorizzazione delle password.
Che cosa significa la stringa di output?
Un hash come $2a$10$ seguito da 53 caratteri contiene la versione 2a, il costo 10, un salt di 22 caratteri e un hash di 31 caratteri, tutti nell’alfabeto Base64 specifico di bcrypt. Memorizzate l’intera stringa, perché il verificatore ne ricava il salt e il costo.
Quale fattore di costo dovrei scegliere?
Lo strumento consente un costo da 4 a 12 e usa 10 per impostazione predefinita, un valore comune nei framework. Ogni incremento raddoppia il tempo, quindi il costo 12 richiede circa quattro volte il tempo del costo 10. In produzione, scegliete il costo più alto che i vostri server riescono a gestire in circa 100–250 millisecondi.
Perché il costo è limitato a 12?
I costi più alti richiedono secondi per ogni hash e permetterebbero a una singola richiesta di occupare il server a lungo. Il costo 12 è già robusto per la maggior parte delle applicazioni; se necessario, potete ricalcolare gli hash con un costo più alto nel vostro ambiente.
Perché la stessa password produce ogni volta un hash diverso?
Lo strumento genera un nuovo salt casuale di 16 byte per ogni hash. Salt diversi producono stringhe diverse, ma tutte vengono verificate rispetto alla stessa password. In questo modo si impedisce agli attaccanti di usare tabelle precalcolate.
Esiste un limite alla lunghezza della password?
Sì. Bcrypt usa solo i primi 72 byte di una password, quindi lo strumento rifiuta le password più lunghe invece di ignorarne silenziosamente il resto. I caratteri non ASCII occupano diversi byte ciascuno in UTF-8.
PHP o Laravel accettano un hash $2a$?
Sì. PHP password_verify, Laravel, Symfony e i plugin WordPress che usano password_hash accettano gli hash $2a$, $2b$ e $2y$, che differiscono solo per correzioni di bug storici. Anche Node.js bcrypt, bcryptjs, Python bcrypt e Spring Security accettano $2a$.
La mia password viene memorizzata o registrata?
No. La password viene usata solo per calcolare l'hash durante la richiesta. Viene rimossa dalla risposta e non viene mai scritta nei log né in alcun archivio.
È meglio usare bcrypt o Argon2?
OWASP raccomanda la variante più recente, Argon2id, perché richiede molta memoria e rende più costosi gli attacchi tramite GPU. bcrypt è comunque accettabile e gode di un supporto molto ampio nelle librerie, quindi è una scelta valida quando Argon2 non è disponibile.
Come posso verificare una password rispetto a un hash bcrypt?
Usate Bcrypt Verifier su questo sito oppure chiamate la funzione verify del vostro framework. Non confrontate mai direttamente le stringhe bcrypt, perché un nuovo hash della stessa password ha sempre un aspetto diverso.