Identificatore di hash

Incolla un hash per vedere quali algoritmi potrebbero averlo prodotto, in ordine di probabilità. Lo strumento legge digest in esadecimale e in Base64 e i formati di hash per password, e può verificare un’ipotesi con un testo a tua scelta.

Funziona interamente nel tuo browser. Non viene caricato nulla.

Come si usa

  1. Incolla un solo hash. Rimuovi etichette come 0x, sha256= o sha384-, ma lascia intatti gli hash di password, compreso un eventuale $, { o * iniziale.
  2. Leggi il risultato: la forma rilevata e la sua dimensione in bit, poi gli algoritmi possibili, con i più probabili contrassegnati come Più probabile. Il fattore di costo di bcrypt, o i round di sha256crypt, sha512crypt e PBKDF2, viene mostrato quando la stringa lo contiene.
  3. Per i candidati MD5, SHA-1, SHA-256, SHA-512, CRC-32 e CRC-32C, il pulsante Apri strumento ti porta al calcolatore corrispondente.
  4. Se conosci o sospetti il testo originale, digitalo in Verifica con un testo per vedere quale algoritmo riproduce l’hash.

Come si identifica un hash

Ogni algoritmo di hash ha una dimensione di output fissa e la notazione esadecimale usa due caratteri per byte, quindi la lunghezza di una stringa esadecimale è l’indizio più forte. Lo strumento controlla anche il set di caratteri e cerca i prefissi che i formati di hash per password inseriscono all’inizio.

Caratteri esadecimaliBitAlgoritmi comuni
832CRC-32, CRC-32C e Adler-32
32128MD5, NTLM e MD4
40160SHA-1 e RIPEMD-160
56224SHA-224 e SHA3-224
64256SHA-256, SHA3-256, BLAKE2s e Keccak-256
96384SHA-384 e SHA3-384
128512SHA-512, SHA3-512, BLAKE2b e Whirlpool

La sola lunghezza non basta a risolvere la questione, perché un buon hash sembra un dato casuale e non porta alcun segno del proprio algoritmo. Un valore di 32 caratteri potrebbe essere MD5, MD4 o NTLM, che Windows usa per le password degli account (MD4 della password in UTF-16LE). Per questo lo strumento ordina i candidati in base alla loro diffusione: prima MD5, oppure prima NTLM quando l’hash è tutto in maiuscolo, come lo stampano alcuni strumenti di estrazione delle password di Windows. Allo stesso modo, il Keccak-256 di Ethereum e lo SHA3-256 standardizzato differiscono solo nel padding, eppure entrambi producono 64 caratteri esadecimali.

Digest Base64 e formati di hash per password

Alcuni sistemi scrivono i digest in Base64 invece che in esadecimale: 24 caratteri per 16 byte (MD5, come nell’header Content-MD5), 28 per SHA-1, 44 per SHA-256, 64 per SHA-384 (come negli attributi Subresource Integrity) e 88 per SHA-512. Lo strumento riconverte la lunghezza in byte ed elenca gli stessi candidati. Il padding mancante e i caratteri sicuri per URL sono accettati, ma rimuovi prima un eventuale prefisso come sha384-.

I formati di hash per password si descrivono da soli: un prefisso indica l’algoritmo, e il salt e i parametri di costo sono scritti nella stringa stessa. Quelli moderni usano un salt e sono volutamente lenti; i formati LDAP e MySQL delle ultime due righe sono invece costruzioni veloci basate su SHA-1, e solo {SSHA} aggiunge un salt.

Inizia conFormatoDove si trova di solito
$2a$, $2b$, $2y$bcrypt, sempre di 60 caratteri; le due cifre successive sono il fattore di costo e ogni incremento raddoppia il lavoroFramework web, PHP password_hash()
$argon2id$Argon2id con parametri di memoria (m), tempo (t) e parallelismo (p)Applicazioni moderne; raccomandato da OWASP
$6$, $5$sha512crypt, sha256crypt, con rounds= facoltativo/etc/shadow su Linux
$y$yescrypt/etc/shadow su molte distribuzioni Linux attuali
$1$, $apr1$md5crypt, Apache MD5Sistemi Unix meno recenti, .htpasswd
pbkdf2_sha256$PBKDF2-SHA256 con il numero di iterazioniDjango
{SHA}, {SSHA}SHA-1, SHA-1 con saltDirectory LDAP
* e 40 cifre esadecimaliMySQL 4.1+ PASSWORD()Tabelle degli utenti di MySQL

Identificare un hash non significa violarlo

Un hash è unidirezionale. L’identificatore guarda solo la forma della stringa: non può rivelare, decifrare o cercare l’input, e non invia nulla a un server o a un database online. L’unico modo per trovare un input è provare dei candidati e calcolare l’hash di ciascuno, ed è ciò che fanno gli strumenti di recupero password come hashcat e John the Ripper una volta noto l’algoritmo. I formati lenti e con salt come bcrypt e Argon2 esistono proprio per rendere costosi questi tentativi. Analizza solo hash su cui sei autorizzato a lavorare.

Verifica con un testo mette alla prova un’ipotesi precisa. Calcola l’hash del testo che digiti, in UTF-8, con MD5, SHA-1, SHA-256, SHA-384, SHA-512, CRC-32 e CRC-32C, e ti dice quale risultato coincide con l’hash, che sia scritto in esadecimale maiuscolo o minuscolo oppure in Base64. Non può confermare hash di password con salt né HMAC, perché dipendono anche da un salt o da una chiave segreta; per un valore calcolato con una chiave usa il generatore HMAC insieme alla chiave.

Domande frequenti

Questo strumento può dirmi il testo o la password originale?

No. Indica solo l’algoritmo probabile. Le funzioni di hash non si possono invertire: i "decifratori di hash" online cercano il valore in tabelle di hash di parole comuni e di password trapelate, il che funziona solo con input deboli e senza salt.

Perché per un solo hash vengono elencati più algoritmi?

Gli algoritmi con la stessa dimensione di output producono stringhe con la stessa lunghezza e lo stesso set di caratteri, e nulla all’interno dell’hash registra quale sia stato usato. Il candidato più probabile compare per primo, in base alla diffusione di ciascun algoritmo. Per avere la certezza, ricalcola l’hash a partire da un input noto.

Una stringa esadecimale di 32 caratteri è sempre MD5?

Di solito sì, ma non sempre. NTLM, MD4, MD2 e RIPEMD-128 producono la stessa lunghezza, così come qualsiasi valore a 128 bit scritto in esadecimale, per esempio un UUID senza trattini o un token casuale. Decide il contesto: un hash di password di Windows indica NTLM, un checksum di un file indica MD5.

Perché Verifica con un testo non trova corrispondenze?
Il testo deve corrispondere byte per byte. Le cause più comuni sono un a capo finale (echo ne aggiunge uno, a meno che tu non usi echo -n o printf), spazi o maiuscole e minuscole diversi, un testo di cui è stato calcolato l’hash con una codifica diversa da UTF-8, un salt o una chiave come negli hash di password e negli HMAC, oppure un algoritmo non coperto dalla verifica, come SHA-3, BLAKE2 o NTLM.
È sicuro incollare qui un hash di password?

L’analisi avviene interamente nel tuo browser e l’hash non viene trasmesso né memorizzato. Tuttavia un hash di password preso da un sistema reale permette a chiunque lo possieda di fare tentativi offline, quindi tratta questi hash come dati sensibili e tienili fuori da ticket, chat e screenshot.