bitlvl
IT

Generatore di hash

Scrivi del testo o trascina un file e ottieni tutti e cinque i digest insieme. Aggiungi una chiave per l’HMAC. Incolla un valore atteso per verificare un download. Tutto viene calcolato sul tuo dispositivo.

Oppure trascina un file, o

I risultati e i messaggi di questo strumento sono mostrati in inglese.

Cos’è un hash

Un hash crittografico trasforma qualsiasi input in un’impronta di dimensione fissa. Cambia un bit dell’input e cambia tutto l’output; dato un output, non c’è un modo pratico di risalire all’input; ed è impraticabile trovare due input con lo stesso hash (per gli algoritmi ancora sicuri). Questo rende gli hash utili per verificare i download, rilevare modifiche, deduplicare dati e, con un salt e un algoritmo lento, memorizzare password.

AlgoritmoOutputStatoUso oggi
MD5128 bit (32 hex)Rotto: le collisioni sono banaliChecksum legacy, chiavi di cache. Mai per la sicurezza.
SHA-1160 bit (40 hex)Rotto: collisioni dimostrate (2017)ID degli oggetti Git (in sostituzione). Non per le firme.
SHA-256256 bit (64 hex)SicuroIl default: TLS, firma del codice, checksum dei download, Bitcoin.
SHA-384384 bit (96 hex)SicuroDove si vuole un margine maggiore; subresource integrity.
SHA-512512 bit (128 hex)SicuroPiù veloce di SHA-256 sulle CPU a 64 bit; hash delle password Linux (sha512crypt).

HMAC

Un HMAC mescola una chiave segreta nell’hash in un modo specifico (RFC 2104) così che solo chi ha la chiave possa produrre o verificare il valore. È il meccanismo dietro i JWT HS256, le firme dei webhook (GitHub, Stripe), la firma delle richieste AWS e i codici TOTP. Un semplice hash(chiave + messaggio) non è sicuro per questo scopo; HMAC esiste per correggere la debolezza di length-extension di quella costruzione.

Verificare un download

  1. Trova il checksum pubblicato sulla pagina di download (spesso un file SHA256SUMS).
  2. Trascina qui il file scaricato, oppure esegui sha256sum file in una shell.
  3. Incolla il valore pubblicato nella casella di confronto. Una corrispondenza significa che il file è byte per byte quello pubblicato.

Un hash corrispondente prova l’integrità, non l’autenticità: se un attaccante può modificare il file può modificare anche il checksum accanto. Per l’autenticità serve una firma (GPG, Sigstore, minisign).

Password

Non memorizzare le password come hash SHA-256. Gli hash veloci si possono indovinare a miliardi al secondo su una GPU. Usa una funzione lenta, con salt e memory-hard progettata per questo: Argon2id, scrypt o bcrypt.

Domande

Quale hash dovrei usare?

SHA-256, a meno che tu non abbia un motivo specifico. È sicuro, supportato ovunque e veloce. SHA-512 è un po’ più veloce su hardware a 64 bit. MD5 e SHA-1 vanno bene solo per usi non di sicurezza come le chiavi di cache.

Un hash si può decifrare?

No. Un hash non è cifratura; non c’è chiave né inversa. Gli attaccanti invece indovinano gli input e confrontano gli hash, cosa che funziona per input corti o comuni (da qui le rainbow table) ed è il motivo per cui le password hanno bisogno di salt e hash lenti.

Perché il mio MD5 è diverso da quello sul sito?

Di solito per i fine riga (CRLF contro LF), un a capo finale, o una codifica del testo diversa. Calcola l’hash dei byte esatti: per un file, usa l’area di trascinamento invece di incollarne il contenuto.

Lo SHA-256 calcolato qui è lo stesso di sha256sum?

Sì, byte per byte. Lo strumento usa l’implementazione WebCrypto del browser per la famiglia SHA. Per il testo in input i byte sono la codifica UTF-8 di ciò che hai scritto.

Il mio file o la mia password vengono inviati da qualche parte?

No. L’hash viene calcolato in locale da JavaScript. Il sito non ha alcun componente lato server che potrebbe riceverli.