Calcola hash crittografici da una stringa qualsiasi o da byte casuali: MD5, SHA-1, SHA-256, SHA-384, SHA-512, SHA-3 (256/512), RIPEMD-160, CRC32, bcrypt. Utile per integrità dati, fingerprinting, test di funzioni hash, password hashing.
Un hash è l'impronta digitale di un testo: da una stringa di qualsiasi lunghezza ottieni una sequenza di lunghezza fissa che ne diventa la firma compatta. Questo strumento calcola in tempo reale MD5, SHA-1, SHA-256, SHA-512, la famiglia SHA-3 e bcrypt, sia da un testo che digiti sia da input casuali generati sul momento. Torna utile a chi sviluppa, verifica l'integrità di un download, salva le password nel modo giusto o studia crittografia. Gli algoritmi seguono gli standard FIPS e RFC; per i calcoli che avvengono nel browser il testo non lascia la tua macchina.
Scrivi una stringa nel campo di input e lo strumento ne calcola l'hash con ogni algoritmo selezionato, aggiornandolo a ogni tasto premuto. Una funzione di hash è deterministica: la parola "password" produce sempre lo stesso SHA-256 (5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8), su qualunque macchina e in qualunque momento. Basta cambiare un solo carattere perché l'output si trasformi da cima a fondo: è il cosiddetto effetto valanga.
Per gli hash casuali l'input non è una tua parola ma una sequenza di byte prodotta da un CSPRNG, un generatore crittograficamente sicuro (in PHP, random_bytes e random_int). Così i valori non sono né prevedibili né riproducibili, il che li rende adatti a token, salt o chiavi. La differenza rispetto a un comune rand() è sostanziale: qui l'entropia è di qualità crittografica, non pseudo-casualità da simulazione.
Bcrypt merita un discorso a parte, perché non è una semplice funzione di hash ma un algoritmo di derivazione pensato apposta per le password. Incorpora un salt casuale e un "cost factor" (tipicamente 10-12) che rende il calcolo volutamente lento, per rendere costosi gli attacchi a forza bruta. Rigenerando il bcrypt della stessa parola ottieni ogni volta un risultato diverso, ed è esattamente come deve essere.
Scarichi una ISO di Ubuntu e vuoi essere sicuro che non sia corrotta: calcoli lo SHA-256 del file e lo confronti con quello pubblicato sul sito ufficiale. Se le due stringhe da 64 caratteri coincidono, l'integrità è confermata.
Stai sviluppando un login e non vuoi tenere le password in chiaro nel database. Generi il bcrypt con cost 12 e memorizzi solo quello, poi in fase di accesso lo verifichi con password_verify senza mai conservare l'originale.
Ti serve un identificativo imprevedibile per un link di reset password o una API key: uno SHA-256 su byte casuali ti restituisce 64 caratteri esadecimali che nessuno può indovinare o generare in anticipo.
L'hash prodotto dal tuo codice non combacia con quello atteso? Confrontalo con quello dello strumento per capire dove sta lo scarto, spesso una codifica sbagliata: UTF-8 contro Latin-1 danno digest completamente diversi.
Devi ripulire un archivio pieno di copie sparse: calcolando l'hash del contenuto individui i file identici anche quando hanno nomi diversi, perché è il contenuto a determinare il digest.
Generi un ETag o una chiave di cache dall'hash del contenuto di una risorsa, così il valore cambia solo quando cambia davvero il dato e il browser sa quando ricaricare.
MD5, progettato da Ron Rivest nel 1991, produce un digest di 128 bit. Per anni è stato lo standard de facto, ma già nel 2004 Xiaoyun Wang e colleghi dimostrarono collisioni pratiche: due input diversi con lo stesso hash. Nel 2008 un gruppo di ricercatori riuscì a forgiare un certificato SSL fraudolento sfruttando proprio quella debolezza. Da allora MD5 va bene solo come checksum contro errori accidentali, mai per la sicurezza.
SHA-1 (160 bit) ha percorso una parabola simile. L'attacco SHAttered del 2017, firmato da Google e CWI Amsterdam, produsse due PDF diversi con lo stesso SHA-1 e chiuse di fatto la partita. Git, che internamente usava SHA-1 per identificare gli oggetti, ha avviato per questo la transizione verso SHA-256.
Lo standard attuale è la famiglia SHA-2, con SHA-256 e SHA-512 in prima fila, pubblicata dal NIST e tuttora ritenuta solida. SHA-3, standardizzata nel 2015 e basata sulla costruzione Keccak a spugna, non nasce per rimpiazzare SHA-2 ma per offrire un'alternativa dalla struttura interna del tutto diversa, un piano B in caso di sorprese future. Per le password, invece, non serve un hash veloce ma un algoritmo lento e salato come bcrypt, scrypt o Argon2.
No, le funzioni di hash sono unidirezionali per progetto: non esiste un'operazione inversa. Chi "decifra" un MD5 in realtà cerca in database di hash precalcolati (rainbow table) oppure prova miliardi di combinazioni. Per stringhe corte o comuni funziona, ed è proprio il motivo per cui le password richiedono salt e algoritmi lenti.
MD5 produce un digest di 128 bit (32 caratteri esadecimali) ed è considerato insicuro perché soggetto a collisioni note. SHA-256 produce 256 bit (64 caratteri) ed è tuttora robusto. A parità di scopo oggi conviene sempre SHA-256, lasciando a MD5 solo i controlli di integrità non critici.
Perché a ogni esecuzione bcrypt sceglie un salt casuale diverso e lo inserisce direttamente nella stringa risultante. Così due utenti con la stessa password non condividono lo stesso hash e le rainbow table diventano inutili. La verifica funziona lo stesso, perché password_verify rilegge quel salt dall'hash e ricalcola il confronto.
Per gli algoritmi che lo consentono il calcolo avviene nel browser, quindi il testo non lascia la tua macchina. In ogni caso è sconsigliato incollare password reali o segreti di produzione in qualsiasi strumento online: usalo per test, esempi e verifiche, non per credenziali attive.
In formato esadecimale MD5 ha 32 caratteri, SHA-1 ne ha 40, SHA-256 ne ha 64 e SHA-512 ne ha 128. La lunghezza è fissa e indipendente dall'input: sia una singola lettera sia un intero romanzo producono uno SHA-256 di 64 caratteri.
In teoria sì, si chiama collisione: gli input possibili sono infiniti, gli output finiti. Con SHA-256 la probabilità è così bassa da risultare trascurabile nella pratica. Con MD5 e SHA-1, invece, le collisioni sono già state costruite deliberatamente dai ricercatori, ed è la ragione per cui non vanno più usati dove conta la sicurezza.