Hai un hash. È una lunga stringa di caratteri esadecimali, o forse ha uno strano prefisso come $2b$. Devi sapere quale algoritmo lo ha creato: per una sfida CTF, un controllo di sicurezza, il recupero della password o semplicemente per curiosità.

Ecco la guida definitiva per identificare qualsiasi tipo di hash in base alla lunghezza, al set di caratteri e al formato.

Cos'è un hash?

Un hash è una stringa di lunghezza fissa prodotta da una funzione matematica unidirezionale. Inserisci qualsiasi input (una password, un file, un messaggio) in un algoritmo di hashing e otterrai un'impronta digitale univoca di dimensione fissa. Lo stesso input produce sempre lo stesso output, ma non è possibile invertire il processo per recuperare l'input originale.

Le funzioni hash vengono utilizzate ovunque: archiviazione di password nei database, verifica dell'integrità dei file, firme digitali e deduplicazione dei dati.

Come identificare un hash: il metodo rapido

Il modo più veloce per identificare un hash è tramite il suo conteggio dei caratteri e set di caratteri. La maggior parte degli hash sono costituiti da caratteri esadecimali (0–9, a–f), ma alcuni algoritmi come bcrypt e SHA-512 crypt utilizzano un alfabeto Base64 più ampio.

Passaggio 1: Conta i caratteri. Passaggio 2: Nota il set di caratteri (solo esadecimale o alfanumerico+speciale). Passaggio 3: Controlla la presenza di un prefisso (bcrypt inizia con $2b$, la cripta SHA-512 inizia con $6$).

Oppure usa semplicemente il nostro Strumento Identificatore Hash per identificarlo automaticamente.

Tabella di riferimento per l'identificazione dell'hash

Tipo di hash Lunghezza Set di caratteri Prefisso / Note
MD5 32 Esadecimale (0-9, a-f) Nessun prefisso
SHA-1 40 Esadecimale Nessun prefisso
SHA-224 56 Esadecimale Nessun prefisso
SHA-256 64 Esadecimale Nessun prefisso
SHA-384 96 Esadecimale Nessun prefisso
SHA-512 128 Esadecimale Nessun prefisso
SHA3-256 64 Esadecimale Indistinguibile da SHA-256 per lunghezza
SHA3-512 128 Esadecimale Indistinguibile da SHA-512 per lunghezza
NTLM 32 Esadecimale Stessa lunghezza di MD5: il contesto conta
MySQL 4.1+ 40 Esadecimale A volte preceduto da *
bcrypt 60 Alfabeto Base64 Inizia con $2a$, $2b$, o $2y$
Cripta SHA-512 106 Alfabeto Base64 Inizia con $6$
Cripta SHA-256 63 Alfabeto Base64 Inizia con $5$
Cripta MD5 34 Alfabeto Base64 Inizia con $1$
Argon2 Variabile Base64+ $ Inizia con $argon2id$ o $argon2i$
scrypt Variabile Base64+ $ Inizia con $s0$
PBKDF2 Variabile Base64 o esadecimale Spesso preceduto da pbkdf2_sha256$
LM Hash 32 Esadecimale Windows legacy: due metà da 16 caratteri
CRC32 8 Esadecimale Molto breve: 4 byte
Idromassaggio 128 Esadecimale Meno comune
RIPEMD-160 40 Esadecimale Stessa lunghezza di SHA-1
Adler-32 8 Esadecimale Checksum, non un hash crittografico

Identificazione degli hash più comuni

MD5 (32 caratteri esadecimali)

Comando
5f4dcc3b5aa765d61d8327deb882cf99

MD5 è l'hash più comune che incontrerai. 32 caratteri esadecimali minuscoli, senza prefisso. Era ampiamente utilizzato per l'archiviazione delle password, ma ora è considerato crittograficamente danneggiato: è veloce da calcolare, il che rende banali gli attacchi di forza bruta.

Comune in: App Web legacy, checksum dei file, sfide CTF, dump delle password del database.

Limitazione: MD5 e NTLM sono entrambi 32 caratteri esadecimali. Se trovi un hash di 32 caratteri da un sistema Windows, probabilmente è NTLM. Da un'app Web, è probabile che sia MD5.

SHA-1 (40 caratteri esadecimali)

Comando
5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8

40 caratteri esadecimali. Deprecato per la maggior parte degli usi di sicurezza dal 2017 ma ancora comune nei sistemi più vecchi, commit Git, certificati SSL (legacy) e checksum dei file.

Comune in: ID oggetto Git, certificati SSL precedenti, strumenti di verifica dei file.

SHA-256 (64 caratteri esadecimali)

Comando
5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8

Lo standard attuale per la maggior parte delle applicazioni. 64 caratteri esadecimali. Utilizzato in Bitcoin (doppio SHA-256), firme JWT, moderni wrapper di archiviazione delle password e TLS.

Comune in: Blockchain, firme API, archiviazione delle password (spesso racchiuse in PBKDF2 o HMAC), verifica dell'integrità dei file.

SHA-512 (128 caratteri esadecimali)

Comando
b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7785e5976ec049b46df5f1326af5a2ea6d103fd07c95385ffab0cacbc86

128 caratteri esadecimali. Più forte ma più lento di SHA-256. Utilizzato in alcuni hashing delle password Linux (/etc/shadow) e applicazioni ad alta sicurezza.

bcrypt (60 caratteri, simile a Base64)

Comando
$2b$12$EixZaYVK1fsbw1ZfbX3OXePaWxn96p36WQoeG6Lruj3vjPGga31lW

Il formato hash più riconoscibile grazie al suo prefisso strutturato:

  • $2b$ (o $2a$, $2y$) — versione dell'algoritmo
  • 12 — fattore di costo (fattore di lavoro), quanti round
  • Tutto dopo: sale + hash di 53 caratteri combinati

bcrypt è volutamente lento. Non puoi accelerarlo con una GPU, motivo per cui è la scelta giusta per l'hashing delle password. Se vedi una stringa di 60 caratteri che inizia con $2, è bcrypt.

Comune in: App PHP (password_hash()), Ruby on Rails, i framework web più moderni.

NTLM (32 caratteri esadecimali)

Comando
b4b9b02e6f09a9bd760f388b67351e2b

Visivamente identico a MD5: 32 caratteri esadecimali minuscoli. NTLM è l'hash di autenticazione legacy di Windows. Se stai eseguendo CTF o pentesting su sistemi Windows, questi appariranno frequentemente.

Come distinguere MD5 da NTLM: Contesto. NTLM proviene da database Windows SAM, Active Directory o strumenti come Mimikatz. MD5 proviene in genere da database di applicazioni Web.

Argon2 (lunghezza variabile, prefisso strutturato)

Comando
$argon2id$v=19$m=65536,t=3,p=4$c29tZXNhbHQ$RdescudvJCsgt3ub+b+dWRWJTmaaJObG

Il vincitore del concorso Password Hashing 2015. Progettato per sfruttare la memoria, rendendolo resistente agli attacchi basati su GPU e ASIC. I framework moderni (Django 4+, PHP 8.1+ nativo) stanno adottando Argon2id.

Ripartizione del prefisso: $argon2id$ = variante, v=19 = versione, m=65536 = costo della memoria, t=3 = costo del tempo, p=4 = parallelismo.

Come identificare un hash quando la sola lunghezza non è sufficiente

Alcuni hash hanno lunghezze e set di caratteri identici:

Collisione Come distinguere
MD5 contro NTLM (32 esadecimali) Contesto di origine: Windows = NTLM, DB Web = MD5
SHA-1 contro RIPEMD-160 (40 esadecimali) RIPEMD-160 è molto più raro; SHA-1 è l'ipotesi sicura
SHA-256 contro SHA3-256 (64 esadecimale) Sono necessari metadati o strumenti dell'algoritmo
SHA-512 contro SHA3-512 contro Whirlpool (128 esadecimale) È necessario il contesto o lo strumento hash-id

Quando la sola lunghezza non basta a risolvere il problema, è necessario:

  1. Controlla il sistema di origine (sistema operativo, framework dell'app, database)
  2. Prova a craccare un valore noto per confermare l'algoritmo
  3. Utilizza uno strumento di identificazione hash che testa più algoritmi

Utilizzo di uno strumento di identificazione hash

Invece di contare manualmente i caratteri, usa il nostro Identificatore hash — incolla qualsiasi hash e:

  • Confronta la lunghezza e il set di caratteri con tutti gli algoritmi conosciuti
  • Evidenzia i candidati più probabili
  • Contrassegna automaticamente i formati con prefisso (bcrypt, SHA-crypt, Argon2).

Ciò è particolarmente utile per le sfide CTF in cui si incontrano formati hash non familiari o è necessario elaborare rapidamente più hash.

Scenari del mondo reale

Scenario 1: hai un dump del database

Troverai una tabella utenti con a password colonna contenente stringhe di 60 caratteri che iniziano con $2b$. Questi sono hash bcrypt. Moderni e implementati correttamente: crackarli è computazionalmente costoso.

Scenario 2: sfida CTF: trovi un file hash

Comando
098f6bcd4621d373cade4e832627b4f6

32 caratteri esadecimali → MD5. La corda test hash su questo valore in MD5. Un rapido attacco con elenco di parole con hashcat o john craccherà istantaneamente le password comuni.

Comando
hashcat -m 0 -a 0 hash.txt wordlist.txt

Modalità -m 0 è MD5. Se fosse SHA-1, usa -m 100. SHA-256 lo è -m 1400.

Scenario 3: Linux /etc/shadow

Comando
$6$rounds=5000$usesomesalt$IxDD3jerizQ5s/bS3FbSsO6hMGFjfSKNBWENHyJ7FXKC4XiuT3pOlLGEBpRiuJ3QGJlyXfS4uNIaVpqEcF2b.

Inizia con $6$ → Cripta SHA-512. Il formato è: $id$salt$hash dove id=6 significa SHA-512.

ID Algoritmo
$1$ Cripta MD5
$5$ Cripta SHA-256
$6$ Cripta SHA-512
$y$ sìcripta
$2b$ bcrypt

Riferimento alla modalità Hashcat

Se stai crackando hash (su sistemi che sei autorizzato a testare), ecco le modalità hashcat per i tipi più comuni:

Tipo di hash Modalità Hashcat
MD5 0
SHA-1 100
SHA-256 1400
SHA-512 1700
NTLM 1000
bcrypt 3200
Cripta SHA-512 ($6$) 1800
MySQL 4.1+ 300
WPA/WPA2 2500

Schede di identificazione rapida

  • 8 caratteri, esadecimale → CRC32 o Adler-32 (checksum, non criptovaluta)
  • 32 caratteri, esadecimale → MD5 o NTLM
  • 40 caratteri, esadecimale → SHA-1 o RIPEMD-160
  • 56 caratteri, esadecimale → SHA-224
  • 64 caratteri, esadecimale → SHA-256 o SHA3-256
  • 96 caratteri, esadecimale → SHA-384
  • 128 caratteri, esadecimale → SHA-512, SHA3-512 o Whirlpool
  • 60 caratteri, inizia con $2 → bcrypt
  • Inizia con $1$ → Cripta MD5
  • Inizia con $5$ → Cripta SHA-256
  • Inizia con $6$ → Cripta SHA-512
  • Inizia con $argon2 → Argon2
  • Inizia con pbkdf2_ → PBKDF2

Identifica il tuo hash adesso

Usa il nostro servizio gratuito Strumento Identificatore Hash : incolla qualsiasi hash e ottieni un'identificazione immediata con punteggi di confidenza e probabili algoritmi.

Strumenti e guide correlati: