Come si usa
- Inserisci un testo, imposta Formato input su Esadecimale per inserire byte esadecimali oppure apri un file.
- SHA-1 è già selezionato; cambia la voce in Algoritmo se vuoi confrontarlo con un’altra funzione di hash.
- In Formato output scegli hex (minuscole), come lo stampano sha1sum e Git, HEX (maiuscole) o Base64.
- 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.is | 6c667ee2efd2020349eed40efa07c26683f613c8 |
你好 | 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?
=. 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.