internettoolbox
← Torna agli strumenti

Generatore di hash per password

Funziona tutto nel browser, non viene caricato nulla. Anche così, non incollare mai una password che usi davvero: genera hash per dati di test, seed e demo, non per credenziali reali.

Parametri di bcrypt

Verifica un hash

Come funziona

Scrivi una password, scegli un algoritmo, regola i parametri di costo e ottieni la stringa di hash da salvare nel database, insieme ai millisecondi che ha richiesto sul tuo dispositivo. È quel tempo il numero che decide davvero quanto l'hash è difficile da forzare.

Quattro algoritmi, uno scopo. Sono funzioni di hashing per password, lente di proposito, e non sono la stessa cosa dei digest generici (MD5, SHA-256) del generatore di hash di questo sito. Una GPU prova miliardi di SHA-256 al secondo, quindi il semplice digest di una password non protegge nulla; questi quattro sono progettati proprio per resistere a quell'attacco. • bcrypt: la scelta pragmatica dal 1999, ancora valida. Un fattore di costo da 4 a 16 stabilisce il lavoro, e ogni passo raddoppia il tempo. OWASP consiglia 10 o più; 12 è un valore comune in produzione. L'output è la classica stringa autonoma `$2b$12$…`. • Argon2id: vincitore della Password Hashing Competition del 2015 e oggi prima raccomandazione. A differenza di bcrypt è memory-hard: regoli memoria (KiB), iterazioni e parallelismo finché la GPU di chi attacca non esaurisce la RAM, non solo i cicli di calcolo. • scrypt: l'altra opzione memory-hard, molto usata nelle criptovalute e nei sistemi meno recenti. Il costo N è una potenza di due; r e p regolano dimensione del blocco e parallelismo. • PBKDF2-SHA256: il più vecchio e il più debole dei quattro, ma quello richiesto da molte normative di conformità (FIPS). Non è memory-hard, quindi conta tutto sul numero di iterazioni, e il valore OWASP del 2023 è 600.000.

Ogni hash ha un salt casuale, quindi la stessa password dà due stringhe diverse a ogni calcolo. È corretto ed è voluto: è ciò che impedisce a chi attacca di usare rainbow table precalcolate.

Verifica un hash prende un hash bcrypt o Argon2 e una password e ti dice se corrispondono. Solo questi due formati si possono verificare partendo dal solo hash, perché solo loro contengono parametri e salt nella stringa. scrypt e PBKDF2 non hanno un formato codificato standard, quindi lo strumento ti restituisce hash e salt separati e i parametri li devi salvare tu.

Tutto gira nella scheda del browser senza richieste di rete, comprese le implementazioni WebAssembly di bcrypt e Argon2. Detto questo, considera qualsiasi strumento web non affidabile per le credenziali reali: usalo per dati di test, seed del database, demo e per imparare, e lascia che sia la libreria della tua applicazione a calcolare l'hash delle password vere degli utenti.

Domande frequenti

Quale algoritmo di hashing usare per le password?

Argon2id, se il tuo linguaggio ha una libreria mantenuta, perché è memory-hard ed è la prima scelta di OWASP. bcrypt è un secondo più che dignitoso ed è disponibile ovunque: usa un costo tra 10 e 12. Scegli PBKDF2 solo quando una normativa (FIPS) lo impone, e in quel caso con almeno 600.000 iterazioni.

Che fattore di costo scegliere per bcrypt?

Abbastanza alto da far durare il calcolo tra 250 e 500 ms circa sull'hardware di produzione, il tempo che di solito ci si può permettere per un login. Il tempo mostrato dopo ogni hash ti serve per tarare: alza il costo finché non arrivi in quell'intervallo. Ogni +1 raddoppia il lavoro, quindi il costo 12 è quattro volte più lento del costo 10.

Perché l'hash cambia ogni volta con la stessa password?

Perché per ogni hash viene generato un nuovo salt casuale. È proprio quello che vuoi: password identiche producono hash salvati diversi, quindi chi attacca non vede le password ripetute e non può usare rainbow table precalcolate. La verifica funziona lo stesso, perché il salt è dentro la stringa bcrypt o Argon2.

Posso verificare un hash bcrypt qui?

Sì. Incolla l'hash e la password da controllare nella sezione Verifica un hash. Funziona con bcrypt ($2a$, $2b$, $2y$) e Argon2 ($argon2id$ e varianti), perché quelle stringhe contengono algoritmo, parametri e salt. Gli hash scrypt e PBKDF2 non si possono verificare dal solo hash, perché i loro parametri stanno fuori dalla stringa.

Il limite di 72 byte di bcrypt è un problema?

Raramente, ma è bene saperlo: bcrypt ignora senza avvisare tutto quello che viene dopo i primi 72 byte di una password, quindi le passphrase molto lunghe vengono di fatto troncate. Tienilo presente se accetti passphrase lunghe o se calcoli un HMAC della password prima di bcrypt. Argon2id e scrypt non hanno questo limite.

È sicuro scrivere qui una password vera?

Meglio di no. L'hash viene calcolato interamente nel browser e la pagina non fa richieste di rete, cosa che puoi controllare nella scheda Rete degli strumenti per sviluppatori, ma il consiglio onesto per qualsiasi strumento di hashing online è di tenere fuori le credenziali che usi davvero. Usalo per dati di test, seed e per imparare, e lascia al backend l'hash delle password reali.

Che differenza c'è con il generatore di hash?

La velocità, ed è tutto lì. Il generatore di hash produce digest generici e veloci (MD5, SHA-1, SHA-256, BLAKE) per checksum e integrità, che sono lo strumento sbagliato per le password proprio perché una GPU ne prova miliardi al secondo. Questo strumento usa funzioni di derivazione della chiave lente, con salt e regolabili, costruite per resistere a quell'attacco.

Quanto dura un attacco offline, per algoritmo e password

Il tempo che una sola GPU di fascia alta (classe RTX 4090) impiega per provare tutte le combinazioni (dimezzalo per il caso medio). Conta il contrasto: la stessa password è banale con un digest veloce e senza speranza con una KDF ben regolata. L'attacco si parallelizza perfettamente, quindi dividi per il numero di GPU che l'attaccante noleggia.

PasswordSHA-256 (senza salt)bcrypt costo 10bcrypt costo 12Argon2id (19 MiB, t=2)
password123 (in ogni dizionario)istantaneoistantaneoistantaneoistantaneo
8 caratteri, solo minuscole2 secondi3 giorni12 giorni3 mesi
8 caratteri, maiuscole, minuscole e cifre3 minuti35 anni140 anni1.400 anni
10 caratteri, maiuscole, minuscole e cifre8 giorni> 100.000 anni> 400.000 annimilioni di anni
12 caratteri, ASCII completo8 anniastronomicoastronomicoastronomico
4 parole casuali (diceware)1 anno> 1 milione di anniastronomicoastronomico

Ordini di grandezza, non previsioni: le velocità presuppongono circa 2×10¹⁰ SHA-256/s, 2×10⁵ bcrypt costo 10/s e 3×10³ Argon2id/s su una GPU moderna, dai benchmark pubblici di Hashcat. Due avvertenze contano più dei numeri esatti: una password presente in una lista di violazioni cade subito con qualsiasi algoritmo, e questi sono tempi offline, cioè con il database già rubato.

Algoritmi di hashing per password a confronto

Tutti e quattro usano un salt e sono regolabili. “Memory-hard” vuol dire che chi attacca ha bisogno di RAM per ogni tentativo, ed è questo che frena gli attacchi con GPU e ASIC.

AlgoritmoAnnoMemory-hardStringa autonomaImpostazioni consigliate
Argon2id2015Sì ($argon2id$…)19 MiB di memoria, 2 iterazioni, parallelismo 1 (minimo OWASP)
scrypt2009NoN = 2^17, r = 8, p = 1 (minimo OWASP)
bcrypt1999NoSì ($2b$…)Fattore di costo 10 o più; limite di 72 byte per la password
PBKDF2-SHA2562000NoNo600.000 iterazioni (OWASP 2023); solo se lo richiede FIPS
MD5 / SHA-256 (semplici)1992 / 2001NoNoMai per le password: miliardi di tentativi al secondo su una GPU

Le impostazioni seguono l'OWASP Password Storage Cheat Sheet. Alzale finché l'hash non richiede 250–500 ms sul tuo hardware di produzione.

Cambia strumento

Cerca e apri qualsiasi strumento