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.
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.
| Password | SHA-256 (senza salt) | bcrypt costo 10 | bcrypt costo 12 | Argon2id (19 MiB, t=2) |
|---|---|---|---|---|
| password123 (in ogni dizionario) | istantaneo | istantaneo | istantaneo | istantaneo |
| 8 caratteri, solo minuscole | 2 secondi | 3 giorni | 12 giorni | 3 mesi |
| 8 caratteri, maiuscole, minuscole e cifre | 3 minuti | 35 anni | 140 anni | 1.400 anni |
| 10 caratteri, maiuscole, minuscole e cifre | 8 giorni | > 100.000 anni | > 400.000 anni | milioni di anni |
| 12 caratteri, ASCII completo | 8 anni | astronomico | astronomico | astronomico |
| 4 parole casuali (diceware) | 1 anno | > 1 milione di anni | astronomico | astronomico |
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.
| Algoritmo | Anno | Memory-hard | Stringa autonoma | Impostazioni consigliate |
|---|---|---|---|---|
| Argon2id | 2015 | Sì | Sì ($argon2id$…) | 19 MiB di memoria, 2 iterazioni, parallelismo 1 (minimo OWASP) |
| scrypt | 2009 | Sì | No | N = 2^17, r = 8, p = 1 (minimo OWASP) |
| bcrypt | 1999 | No | Sì ($2b$…) | Fattore di costo 10 o più; limite di 72 byte per la password |
| PBKDF2-SHA256 | 2000 | No | No | 600.000 iterazioni (OWASP 2023); solo se lo richiede FIPS |
| MD5 / SHA-256 (semplici) | 1992 / 2001 | No | No | Mai 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.