Generatore di hash SHA-1

Ottieni il digest SHA-1 a 160 bit di un testo, di byte esadecimali o di un file mentre digiti. Confrontalo con un checksum pubblicato e vedi a colpo d’occhio SHA-256, SHA-512 e MD5 dello stesso input.

Tutti gli algoritmi

Funziona interamente nel tuo browser. Non viene caricato nulla.

Come si usa

  1. Inserisci un testo, imposta Formato input su Esadecimale per inserire byte esadecimali oppure apri un file.
  2. SHA-1 è già selezionato; cambia la voce in Algoritmo se vuoi confrontarlo con un’altra funzione di hash.
  3. In Formato output scegli hex (minuscole), come lo stampano sha1sum e Git, HEX (maiuscole) o Base64.
  4. Incolla il valore SHA-1 atteso nel campo Confronta con: la pagina mostra Corrisponde o Non corrisponde.

Che cos’è SHA-1?

SHA-1 (Secure Hash Algorithm 1) è stato progettato dalla NSA e pubblicato dal NIST nel 1995 come FIPS 180-1, in sostituzione dello SHA-0, che ebbe vita breve. Oggi è specificato in FIPS 180-4, e la RFC 3174 lo descrive con codice C di esempio. SHA-1 elabora blocchi da 512 bit in 80 round e produce un digest di 160 bit: 40 caratteri esadecimali o 28 caratteri Base64.

Come ogni hash, SHA-1 è unidirezionale. Un digest non si può decifrare, ma solo confrontare con l’hash di un tentativo. È così che gli hash SHA-1 senza salt delle password sottratte a LinkedIn nel 2012 sono stati craccati in massa; le password vanno protette con Argon2, scrypt, bcrypt o PBKDF2.

SHAttered: perché SHA-1 è deprecato

Nel febbraio 2017 i ricercatori del CWI di Amsterdam e di Google hanno pubblicato SHAttered, la prima vera collisione SHA-1: due file PDF diversi con lo stesso hash, trovati con circa 2^63 calcoli SHA-1. Nel 2020 Gaëtan Leurent e Thomas Peyrin ("SHA-1 is a Shambles") hanno usato una collisione a prefisso scelto per dimostrare firme SHA-1 contraffatte su chiavi PGP, con un costo alla portata di un attaccante dotato di buone risorse.

  • Le CA pubbliche hanno smesso di emettere certificati TLS SHA-1 nel 2016, e i browser hanno smesso di considerarli attendibili all’inizio del 2017.
  • Il NIST vieta SHA-1 per le nuove firme digitali dal 2013 e prevede di ritirarlo del tutto entro la fine del 2030.
  • La maggior parte dei repository Git identifica ancora gli oggetti tramite SHA-1, calcolato con un’implementazione rafforzata che rileva i tentativi di collisione; Git può anche creare repository che usano SHA-256.

Le collisioni non compromettono HMAC, quindi HMAC-SHA1 si trova ancora nei codici TOTP e nelle firme dei webhook meno recenti; puoi calcolarlo con il Generatore HMAC. Per qualsiasi progetto nuovo scegli SHA-256.

ID degli oggetti Git, Base64 e codifica del testo

L’ID di un blob Git non è lo SHA-1 del solo file. Git calcola l’hash di un header formato da blob, uno spazio, la dimensione in byte e un byte zero, seguito dal contenuto. Per riprodurlo qui, imposta Formato input su Esadecimale e includi i byte dell’header: per hello seguito da un carattere di nuova riga, l’input esadecimale è 626c6f6220360068656c6c6f0a.

$ printf 'hello\n' | sha1sum
f572d396fae9206628714fb2ce00f72e94f2258f  -
$ printf 'hello\n' | git hash-object --stdin
ce013625030ba8dba906f756967f9e9ca394464a

Lo SHA-1 si mostra di solito in esadecimale minuscolo. Il Base64 compare nell’handshake WebSocket, dove Sec-WebSocket-Accept è lo SHA-1 in Base64 della chiave del client seguita da un GUID fisso, e nei valori di password LDAP {SHA}. Ricorda che l’hash si calcola sui byte: un testo con lettere accentate ha un certo SHA-1 in UTF-8 e un altro in Windows-1252.

SHA-1 dalla riga di comando e nel codice

sha1sum file.zip                          # Linux
shasum file.zip                           # macOS (SHA-1 è il predefinito)
certutil -hashfile file.zip SHA1          # Windows
Get-FileHash file.zip -Algorithm SHA1     # PowerShell

# Python
hashlib.sha1(data).hexdigest()

// Node.js
crypto.createHash('sha1').update(data).digest('hex')

Questa pagina calcola SHA-1 con l’API Web Crypto integrata nel tuo browser, quindi l’input non lascia mai il tuo dispositivo. La tabella Tutti gli algoritmi mostra i valori MD5, SHA-256, SHA-384, SHA-512 e CRC dello stesso input.

Esempi

Input (UTF-8)SHA-1
Hello, World!0a0a9f2a6772942557ab5355d76af442f8f65e01
Base64.is6c667ee2efd2020349eed40efa07c26683f613c8
你好440ee0853ad1e99f962b63e459ef992d7c211722

Domande frequenti

SHA-1 è ancora sicuro da usare?

Non dove un attaccante può scegliere o influenzare l’input, come nelle firme e nei certificati, perché è possibile produrre collisioni SHA-1. Rileva ancora la corruzione accidentale, e HMAC-SHA1 non risente delle collisioni. Per i nuovi progetti usa SHA-256 o SHA-512.

Un hash SHA-1 si può invertire?

No. Non c’è nessuna chiave e nessuna decifratura. I siti di ricerca degli hash trovano solo input già presenti nelle loro tabelle di parole comuni e password trapelate: per questo un input lungo e casuale è al sicuro, mentre una password corta no.

Quanto è lungo un hash SHA-1?
160 bit, cioè 20 byte: 40 caratteri esadecimali o 28 caratteri Base64 che terminano con un =. RIPEMD-160 ha la stessa lunghezza, e gli hash delle password di MySQL 4.1+ sono un asterisco seguito da 40 caratteri esadecimali. L’Identificatore di hash elenca i candidati per una data stringa.
Come verifico un file con un valore SHA-1 pubblicato?

Apri il file, poi incolla il valore pubblicato nel campo Confronta con. Sono accettati l’esadecimale maiuscolo o minuscolo e il Base64, e la pagina mostra Corrisponde o Non corrisponde.

Qual è la differenza tra SHA-1 e SHA-256?

Sono stati pubblicati entrambi dal NIST, ma SHA-256 appartiene alla più recente famiglia SHA-2, ha un output di 256 bit e contro di esso non si conoscono attacchi pratici. SHA-1 ha un output più corto e la sua resistenza alle collisioni è stata violata.