Identificatore di Hash

Identifica il tipo di hash per lunghezza e formato — MD5, SHA-1, SHA-256 e altri

Stringa Hash

Esegue in locale · Sicuro per incollare segreti

Cos'è l'identificazione degli hash?

L'identificazione degli hash è il processo che determina quale algoritmo crittografico ha prodotto un dato digest. Le funzioni hash crittografiche come MD5, SHA-1 e SHA-256 producono ciascuna output di lunghezza fissa, e questa lunghezza è il segnale principale per identificare un hash sconosciuto. Quando si incontra una stringa esadecimale in un dump di database, un file di configurazione o una risposta API, uno strumento di identificazione hash indica quale algoritmo l'ha probabilmente generata.

Ogni algoritmo hash mappa dati di input arbitrari su un output di dimensione fissa chiamato digest. MD5 produce sempre 128 bit (32 caratteri hex), SHA-1 produce sempre 160 bit (40 caratteri hex) e SHA-256 produce sempre 256 bit (64 caratteri hex). Questa lunghezza di output deterministica è ciò che rende possibile l'identificazione algoritmica senza accesso all'input originale o al codice di hashing.

L'identificazione basata sulla sola lunghezza non è sempre definitiva. Diversi algoritmi condividono la stessa dimensione di output — ad esempio, SHA-256 e SHA3-256 producono entrambi digest hex di 64 caratteri. In questi casi, uno strumento di identificazione hash fornisce un elenco di algoritmi candidati ordinati per prevalenza. Indizi contestuali come il sistema sorgente, il formato di codifica (hex vs. Base64) e la presenza di prefissi algoritmici (come '$2b$' per bcrypt) restringono ulteriormente le possibilità.

Perché usare un identificatore di hash?

Gli hash sconosciuti compaiono regolarmente durante audit di sicurezza, migrazioni di database e analisi forense. Un identificatore di hash elimina le congetture e indica l'algoritmo corretto in pochi secondi.

Rilevamento immediato
Incolla un hash e ottieni immediatamente gli algoritmi candidati. Non è necessario contare manualmente i caratteri o consultare tabelle di riferimento — lo strumento mappa automaticamente la lunghezza hex a tutti gli algoritmi corrispondenti.
🔒
Analisi con privacy garantita
Tutta l'identificazione viene eseguita interamente nel browser tramite JavaScript. Il valore dell'hash non lascia mai il tuo dispositivo, il che è importante quando si analizzano hash di password, token di autenticazione o prove forensi sensibili.
📋
Copertura algoritmica completa
Rileva MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 e le rispettive controparti SHA-3. La tabella di riferimento copre le famiglie complete SHA-2 e SHA-3 più alternative comuni come RIPEMD-160 e BLAKE2.
🚫
Nessun account o installazione
Funziona immediatamente in qualsiasi browser moderno. Nessuna registrazione, nessuna chiave API, nessun strumento CLI da installare. Salvalo nei preferiti e usalo ogni volta che incontri un hash sconosciuto — su qualsiasi sistema operativo, qualsiasi dispositivo.

Casi d'uso dell'identificatore di hash

Audit di sicurezza
Durante i penetration test, l'identificazione degli algoritmi hash delle password nei database compromessi determina l'approccio al cracking. Gli hash MD5 e SHA-1 indicano una protezione debole e possono essere prioritari per la remediation.
Migrazione di database
Quando si migrano record utente tra sistemi, l'algoritmo hash delle password memorizzato deve essere noto per configurare correttamente il nuovo livello di autenticazione. Un'identificazione errata dell'algoritmo causa il fallimento di tutti i login.
DevOps e CI/CD
Le pipeline di build spesso includono checksum per la verifica degli artefatti. Identificare se un checksum è SHA-256 o SHA-512 garantisce l'utilizzo del comando di verifica corretto negli script di deployment.
Informatica forense
Gli esaminatori forensi incontrano digest hash nei log di integrità dei file, nei record blockchain e nei metadati delle prove. Identificare l'algoritmo è un prerequisito per verificare la catena di custodia delle prove.
Integrazione API
Le API di terze parti a volte restituiscono valori hash senza documentare l'algoritmo. Identificare il tipo di hash dalla risposta consente di configurare correttamente la verifica della firma webhook o la validazione del checksum.
Apprendimento della crittografia
Gli studenti che seguono corsi di crittografia possono incollare hash generati da diversi algoritmi e vedere immediatamente la relazione tra la scelta dell'algoritmo, la lunghezza dell'output e le proprietà di sicurezza.

Riferimento sulla lunghezza degli algoritmi hash

La tabella seguente mappa ogni comune algoritmo hash alla sua dimensione di output in bit, caratteri hex e byte grezzi. Questa è la tabella di ricerca primaria utilizzata dagli strumenti di identificazione hash. Quando più algoritmi condividono la stessa lunghezza hex, è necessario contesto aggiuntivo per distinguerli.

AlgoritmoBitCaratteri hexByteNote
MD51283216Broken — collisions trivial since 2004
SHA-11604020Deprecated — SHAttered attack (2017)
SHA-2242245628Truncated SHA-256; rarely used standalone
SHA-2562566432Current standard; TLS, Git, Bitcoin
SHA-3843849648Truncated SHA-512; CNSA Suite approved
SHA-51251212864Maximum SHA-2 output; large-data hashing
SHA3-2562566432Keccak-based; NIST alternative to SHA-2
SHA3-51251212864Keccak-based; highest SHA-3 strength
RIPEMD-1601604020Used in Bitcoin address derivation
BLAKE2s2566432Faster than SHA-256; 256-bit output

Disambiguare le lunghezze degli hash

Alcune lunghezze hex corrispondono a più algoritmi. Le due ambiguità più comuni sono gli hash di 64 caratteri (SHA-256 vs. SHA3-256) e quelli di 40 caratteri (SHA-1 vs. RIPEMD-160). Ecco come distinguerli quando la sola lunghezza non è sufficiente.

64 caratteri hex: SHA-256 vs. SHA3-256
Entrambi producono digest di 256 bit (64 caratteri). SHA-256 è di gran lunga più comune nella pratica — i commit Git, i certificati TLS, i blocchi Bitcoin e la maggior parte delle firme API utilizzano SHA-256. SHA3-256 si trova tipicamente solo in sistemi che richiedono esplicitamente la conformità NIST SP 800-185 o costruzioni basate su Keccak. Verificare la documentazione del sistema sorgente per confermare.
40 caratteri hex: SHA-1 vs. RIPEMD-160
SHA-1 è l'hash a 160 bit di gran lunga più diffuso — usato storicamente in Git (prima della transizione a SHA-256), TLS e nella firma del codice. RIPEMD-160 appare principalmente nella generazione di indirizzi Bitcoin (HASH160 = SHA-256 seguito da RIPEMD-160). Se l'hash proviene da un contesto di criptovalute, considera RIPEMD-160; altrimenti SHA-1 è il candidato più probabile.

Esempi di codice

Di seguito sono riportate implementazioni funzionanti dell'identificazione hash tramite lunghezza hex in quattro linguaggi. Ogni funzione valida la codifica hex, ricerca il conteggio dei caratteri e restituisce tutti gli algoritmi corrispondenti.

JavaScript
function identifyHash(hex) {
  const len = hex.length
  const isHex = /^[0-9a-fA-F]+$/.test(hex)
  if (!isHex) return ['Not a hex-encoded hash']

  const map = {
    32:  ['MD5'],
    40:  ['SHA-1', 'RIPEMD-160'],
    56:  ['SHA-224', 'SHA3-224'],
    64:  ['SHA-256', 'SHA3-256', 'BLAKE2s'],
    96:  ['SHA-384', 'SHA3-384'],
    128: ['SHA-512', 'SHA3-512', 'BLAKE2b'],
  }
  return map[len] || [`Unknown (${len} hex chars)`]
}

identifyHash('d41d8cd98f00b204e9800998ecf8427e')
// → ["MD5"]

identifyHash('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855')
// → ["SHA-256", "SHA3-256", "BLAKE2s"]
Python
import re

HASH_LENGTHS = {
    32:  ['MD5'],
    40:  ['SHA-1', 'RIPEMD-160'],
    56:  ['SHA-224', 'SHA3-224'],
    64:  ['SHA-256', 'SHA3-256', 'BLAKE2s'],
    96:  ['SHA-384', 'SHA3-384'],
    128: ['SHA-512', 'SHA3-512', 'BLAKE2b'],
}

def identify_hash(hex_string: str) -> list[str]:
    hex_string = hex_string.strip()
    if not re.fullmatch(r'[0-9a-fA-F]+', hex_string):
        return ['Not a hex-encoded hash']
    return HASH_LENGTHS.get(len(hex_string), [f'Unknown ({len(hex_string)} hex chars)'])

identify_hash('da39a3ee5e6b4b0d3255bfef95601890afd80709')
# → ['SHA-1', 'RIPEMD-160']

identify_hash('a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a')
# → ['SHA-256', 'SHA3-256', 'BLAKE2s']
Go
package main

import (
	"fmt"
	"regexp"
)

var hexPattern = regexp.MustCompile("^[0-9a-fA-F]+$")

var hashLengths = map[int][]string{
	32:  {"MD5"},
	40:  {"SHA-1", "RIPEMD-160"},
	56:  {"SHA-224", "SHA3-224"},
	64:  {"SHA-256", "SHA3-256", "BLAKE2s"},
	96:  {"SHA-384", "SHA3-384"},
	128: {"SHA-512", "SHA3-512", "BLAKE2b"},
}

func identifyHash(hex string) []string {
	if !hexPattern.MatchString(hex) {
		return []string{"Not a hex-encoded hash"}
	}
	if algos, ok := hashLengths[len(hex)]; ok {
		return algos
	}
	return []string{fmt.Sprintf("Unknown (%d hex chars)", len(hex))}
}

func main() {
	fmt.Println(identifyHash("d41d8cd98f00b204e9800998ecf8427e"))
	// → [MD5]
}
CLI (Bash)
#!/bin/bash
# Identify a hash from the command line by character count
hash="$1"

if [[ ! "$hash" =~ ^[0-9a-fA-F]+$ ]]; then
  echo "Not a hex-encoded hash"
  exit 1
fi

len=${#hash}
case $len in
  32)  echo "MD5 (128-bit)" ;;
  40)  echo "SHA-1 or RIPEMD-160 (160-bit)" ;;
  56)  echo "SHA-224 or SHA3-224 (224-bit)" ;;
  64)  echo "SHA-256 or SHA3-256 (256-bit)" ;;
  96)  echo "SHA-384 or SHA3-384 (384-bit)" ;;
  128) echo "SHA-512 or SHA3-512 (512-bit)" ;;
  *)   echo "Unknown hash length: $len chars" ;;
esac

# Usage: ./identify.sh d41d8cd98f00b204e9800998ecf8427e
# → MD5 (128-bit)

Domande frequenti

Come funziona l'identificazione degli hash?
L'identificazione degli hash si basa principalmente sulla lunghezza del digest codificato in hex. Ogni algoritmo hash produce un numero fisso di bit di output: MD5 produce 128 bit (32 caratteri hex), SHA-1 produce 160 bit (40 caratteri hex), SHA-256 produce 256 bit (64 caratteri hex) e così via. L'identificatore misura la lunghezza della stringa, verifica che contenga solo caratteri esadecimali e la mappa alle dimensioni di output degli algoritmi noti.
Un identificatore di hash può determinare l'algoritmo esatto con certezza?
Non sempre. Più algoritmi possono produrre la stessa lunghezza di output. SHA-256 e SHA3-256 producono entrambi 64 caratteri hex. SHA-1 e RIPEMD-160 producono entrambi 40 caratteri hex. In questi casi, lo strumento restituisce tutti i candidati. È necessario contesto — il sistema sorgente, la documentazione o i prefissi algoritmici — per restringere a un singolo algoritmo.
E se il mio hash è codificato in Base64 invece che in hex?
Gli hash codificati in Base64 usano un set di caratteri diverso (A-Z, a-z, 0-9, +, /) e hanno lunghezze diverse rispetto agli equivalenti hex. Un hash di 256 bit occupa 44 caratteri Base64 ma 64 caratteri hex. Decodifica prima la stringa Base64 in byte grezzi, poi controlla la lunghezza in byte: 16 byte = MD5, 20 byte = SHA-1, 32 byte = SHA-256, 48 byte = SHA-384, 64 byte = SHA-512.
È sicuro incollare hash di password in un identificatore online?
Questo strumento viene eseguito interamente nel browser — nessun dato viene trasmesso a nessun server. L'hash non lascia mai il tuo dispositivo. Detto questo, per la massima sicurezza operativa durante un audit formale, puoi verificarlo ispezionando la scheda di rete negli strumenti per sviluppatori del browser o utilizzando lo strumento offline dopo che la pagina è stata caricata.
Perché MD5 è ancora utilizzato se è crittograficamente compromesso?
MD5 è compromesso per quanto riguarda la resistenza alle collisioni — un attaccante può costruire due input diversi che producono lo stesso hash. Tuttavia, MD5 è ancora utilizzato in contesti non di sicurezza: checksum di file per la verifica dei download, chiavi di cache, deduplicazione ed ETag in HTTP. Per questi scopi, le collisioni accidentali sono astronomicamente improbabili e gli attacchi deliberati non sono un problema. MD5 non deve essere usato per l'hashing delle password, le firme digitali o la verifica dei certificati.
Come identifico gli hash bcrypt, scrypt o Argon2?
Le funzioni di hashing delle password come bcrypt, scrypt e Argon2 utilizzano prefissi stringa distintivi anziché output hex grezzo. Gli hash bcrypt iniziano con '$2a$', '$2b$' o '$2y$' seguiti da un fattore di costo. Gli hash Argon2 iniziano con '$argon2id$' o '$argon2i$'. Gli hash scrypt iniziano tipicamente con '$scrypt$'. Questi non sono digest crittografici grezzi, quindi l'identificazione basata sulla lunghezza non si applica — è il prefisso stesso a identificare l'algoritmo.
Qual è la differenza tra SHA-2 e SHA-3?
SHA-2 (che include SHA-256, SHA-384 e SHA-512) è basato sulla costruzione Merkle-Damgard progettata dalla NSA e standardizzata in FIPS 180-4. SHA-3 (SHA3-256, SHA3-384, SHA3-512) è basato sulla costruzione a spugna Keccak, selezionata attraverso una competizione pubblica NIST e standardizzata in FIPS 202. Producono le stesse lunghezze di output a livelli di sicurezza equivalenti ma utilizzano strutture interne fondamentalmente diverse. SHA-3 è stato progettato come alternativa nel caso in cui vengano trovate debolezze strutturali in SHA-2, sebbene tali debolezze non siano state ancora dimostrate.