Generatore Hash SHA-1 (Legacy 160-bit)
Genera hash SHA-1 nel browser — output hex a 40 caratteri, senza upload. Strumento legacy per impronte Git, verifica di vecchi certificati e audit di migrazione. I dati non lasciano mai il tuo dispositivo.
Cos'è SHA-1?
SHA-1 (Secure Hash Algorithm 1) è una funzione hash crittografica a 160 bit pubblicata da NIST nel 1995 come FIPS 180-1. È stata progettata dalla National Security Agency degli Stati Uniti per sostituire SHA-0 (una versione precedente difettosa ritirata rapidamente nel 1993) ed è stato l'algoritmo hash dominante per firme digitali, certificati TLS e firma del codice negli anni 2000.
Storia delle violazioni: Nel 2005, il team di Xiaoyun Wang ha pubblicato un attacco teorico che riduceva la resistenza alle collisioni SHA-1 dalle attese 2^80 a 2^63 operazioni — una violazione teorica, ma non ancora pratica. Nel febbraio 2017, Google e CWI Amsterdam hanno rilasciato l'attacco SHAttered, producendo due documenti PDF distinti con hash SHA-1 identici usando circa 110 GPU-anni di calcolo. Questa è stata la definitiva violazione pratica. NIST aveva già deprecato SHA-1 per le firme nel 2011 (NIST SP 800-131A); i fornitori di browser e le Autorità di Certificazione hanno rimosso il supporto ai certificati SHA-1 nel 2016-2017.
Stato attuale: SHA-1 è deprecato per tutti gli usi sensibili alla sicurezza — firme digitali, impronte di certificati, memorizzazione delle password e firma del codice. Persiste nel formato object-ID di Git (hash di commit), dove viene usato per il content-addressing piuttosto che per la sicurezza, e nei checksum del software legacy dove gli amministratori non hanno ancora migrato. Il progetto Git ha aggiunto il supporto al formato oggetto SHA-256 nella versione 2.29 (ottobre 2020). Tutti i nuovi progetti dovrebbero usare SHA-256 o più forte.
Questo strumento calcola SHA-1 interamente nel tuo browser usando crypto.subtle.digest('SHA-1', ...) dalla Web Crypto API. L'output hex a 40 caratteri è identico a quello che producono sha1sum, openssl dgst -sha1 o git hash-object. Nessun byte viene inviato a nessun server.
SHA-1 vs la famiglia SHA-2: SHA-1 produce 40 caratteri hex (160 bit). SHA-256 produce 64 caratteri hex (256 bit) e non ha vulnerabilità note. MD5 produce 32 caratteri hex (128 bit) ed è stato violato prima (2004). Per qualsiasi nuovo lavoro di hashing, SHA-256 è la scelta standard.
// Hash text using Web Crypto API (SHA-1 — legacy use only)
async function sha1(text) {
const data = new TextEncoder().encode(text);
const hash = await crypto.subtle.digest('SHA-1', data);
return Array.from(new Uint8Array(hash))
.map(b => b.toString(16).padStart(2, '0'))
.join('');
}
await sha1('Hello, World!');
// → '0a0a9f2a6772942557ab5355d76af442f8f65e01'
// ⚠️ SHA-1 is broken — use SHA-256 for new work. Esempi SHA-1
Ricerca dell'impronta di un commit Git
tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904 author A Dev <dev@example.com> 1716854400 +0000 committer A Dev <dev@example.com> 1716854400 +0000 Initial commit
Git memorizza ogni commit come un blob il cui SHA-1 viene calcolato dall'intestazione del commit più i contenuti esattamente in questo formato. La stringa hex a 40 caratteri che git log mostra è una diretta impronta SHA-1. Incolla qui il testo grezzo dell'oggetto commit per riprodurre lo stesso hash — utile quando si esegue il debug dell'output di git cat-file o si verifica che un repository mirror non abbia alterato la cronologia. Nota: Git 2.29+ supporta la modalità SHA-256 (git init --object-format=sha256). Per i nuovi repository, preferisci la modalità SHA-256.
Verifica dell'impronta di un certificato TLS legacy
-----BEGIN CERTIFICATE----- MIIDXTCCAkWgAwIBAgIJAKlL... -----END CERTIFICATE-----
Prima del 2017, i browser mostravano le impronte dei certificati come stringhe hex SHA-1 a 40 caratteri. Le CA hanno smesso di emettere certificati firmati SHA-1 nel gennaio 2016, e tutti i principali browser hanno rimosso il supporto all'inizio del 2017. Se stai effettuando un audit di un vecchio certificato interno o validando un dispositivo IoT legacy, incolla qui il corpo PEM per riprodurre l'impronta SHA-1 a scopo di confronto. I flussi di lavoro moderni usano l'impronta SHA-256 a 64 caratteri.
Verifica di un vecchio download software
node-v0.12.7-linux-x64.tar.gz
Alcuni archivi software più vecchi pubblicano ancora solo un checksum SHA-1 insieme al download. Sebbene questo fornisca un rilevamento di base della corruzione (non del manomissione), è comunque meglio di nessun checksum. Usa la scheda File per caricare l'archivio, calcola il SHA-1, poi confrontalo con il valore pubblicato dal distributore. Se è disponibile anche SHA-256, preferisci sempre quello. Per i nuovi archivi, insisti su checksum SHA-256 o SHA-512.
Dimostrazione della collisione SHAttered
(Incolla il contenuto del file shattered-1.pdf di Google/CWI tramite la scheda File)
Nel febbraio 2017 Google e CWI Amsterdam hanno rilasciato l'attacco SHAttered — la prima collisione pratica SHA-1. Hanno prodotto due file PDF diversi (shattered-1.pdf e shattered-2.pdf) che producono lo stesso identico valore SHA-1: 38762cf7f55934b34d179ae6a4c80cadccbb7f0a. Trascinando uno dei due PDF nella scheda File di questo strumento si ottiene esattamente quell'hash, dimostrando che la collisione è reale. Usa SHA-256 per tutti i nuovi flussi di lavoro di integrità dei documenti.
Come Generare Hash SHA-1
- 1
Incolla testo o trascina un file
Seleziona la scheda Testo e incolla qualsiasi stringa — un messaggio di commit, il corpo di un certificato o un input di checksum legacy — nel campo di input. L'hash SHA-1 si aggiorna mentre scrivi. Per i file, passa alla scheda File e trascina qualsiasi file nella zona di rilascio; il browser lo hashata localmente senza alcun upload.
- 2
Copia l'hash a 40 caratteri
Clicca il pulsante Copia accanto all'output dell'hash. La stringa hex minuscola completa a 40 caratteri va negli appunti. Usa l'interruttore Maiuscolo se il tuo sistema legacy richiede hex maiuscolo — alcuni vecchi strumenti e API Windows usano il maiuscolo per default.
- 3
Confronta con un'impronta legacy
Passa alla scheda Confronta e incolla due hash SHA-1 affiancati per confermare se corrispondono. Utile per validare un checksum di un distributore legacy, fare l'audit di un repository Git con mirroring o controllare un'impronta di vecchio certificato TLS da un documento che precede l'adozione di SHA-256.
Dettagli Tecnici
- Algoritmo: costruzione Merkle-Damgård, 80 round
- SHA-1 elabora l'input in blocchi da 512 bit (64 byte), applicando 80 round di operazioni bitwise raggruppati in quattro stadi da 20 round ciascuno, ognuno con una diversa funzione logica (Ch, Parity, Maj, Parity) e una costante additiva derivata dalle radici quadrate di interi piccoli. Lo stato hash iniziale è cinque parole da 32 bit (A–E), e l'hash finale è la concatenazione di quelle parole dopo l'ultimo blocco. Implementazione definita in FIPS 180-1 (1995), sostituita da FIPS 180-4 (2015) che include formalmente il linguaggio di deprecazione.
- Output: 160 bit, 40 caratteri esadecimali
- Sempre esattamente 40 caratteri esadecimali minuscoli (160 bit = 20 byte, codificati come 2 caratteri hex per byte). La lunghezza dell'output è fissa indipendentemente dalla dimensione dell'input. Rispetto ai 64 caratteri di SHA-256, l'output più corto fornisce meno bit di resistenza alle collisioni — un fattore chiave del perché SHA-1 è stato violato prima di SHA-256.
- Prestazioni: veloce ma questo è parte del problema
- SHA-1 è veloce — tipicamente 400–700 MB/s in un browser usando Web Crypto, competitivo con SHA-256. Per un attaccante, questa velocità è un vantaggio: un cluster GPU moderno può calcolare miliardi di hash SHA-1 al secondo, accelerando la ricerca di forza bruta e di collisioni. La velocità è il motivo per cui SHA-1 (come MD5) non deve mai essere usato per la memorizzazione delle password — usa invece bcrypt, scrypt o Argon2.
- Standard: FIPS 180-1 (1995) — deprecato nel contesto FIPS 180-4
- SHA-1 è stato standardizzato in FIPS 180-1 (1995), sostituendo il difettoso SHA-0. NIST ha deprecato SHA-1 per le firme digitali in NIST SP 800-131A (2011) e in FIPS 186-5 (2023) lo ha formalmente vietato per tutta la generazione di firme digitali. RFC 6194 (2011) ha documentato le considerazioni di sicurezza note. La W3C WebCrypto API include ancora SHA-1 per motivi di interoperabilità legacy, il che è come questo strumento browser può calcolarlo.
Best Practice
- Non usare mai SHA-1 per operazioni sensibili alla sicurezza
- SHA-1 è deprecato per firme digitali, certificati TLS, firma del codice, memorizzazione delle password e qualsiasi flusso di lavoro in cui conta la resistenza alle collisioni. L'attacco SHAttered del 2017 ha dimostrato collisioni pratiche. Per tutti gli usi di sicurezza, migra a SHA-256 o SHA-3. La differenza di costo è trascurabile sull'hardware moderno — SHA-256 è accelerato hardware in tutti i processori e le pipeline GPU attuali.
- SHA-1 per la ricerca di impronte legacy è accettabile
- Se devi verificare un checksum di file pre-2017, cercare un ID commit Git o ispezionare un'impronta di vecchio certificato a scopo di audit, SHA-1 è appropriato. L'hash stesso non viene usato per prendere una decisione di fiducia — stai solo riproducendo un'impronta nota per riferimento incrociato. Documenta questo esplicitamente nei tuoi log di audit: 'SHA-1 usato solo per riferimento legacy, non per validazione della sicurezza.'
- Fai sempre l'hash dei byte UTF-8, non dei code point Unicode
- SHA-1, come tutti gli algoritmi hash, opera su byte, non su caratteri. La stessa stringa codificata come UTF-8 vs UTF-16 produce hash diversi. Questo strumento codifica sempre l'input come UTF-8 senza BOM prima dell'hashing. Se devi corrispondere a un sistema che usa una codifica diversa (Windows UTF-16-LE, Latin-1), devi pre-codificare l'input esternamente prima di confrontare gli hash.
- Usa il confronto a tempo costante quando verifichi gli hash nel codice
- Se confronti due hash SHA-1 nel codice, usa un controllo di uguaglianza a tempo costante — Node.js
crypto.timingSafeEqual(), Pythonhmac.compare_digest()— piuttosto che la banale uguaglianza di stringhe (=== o ==). Il confronto ingenuo perde informazioni di timing che possono teoricamente permettere a un attaccante di ricostruire l'hash atteso byte per byte.
Domande Frequenti SHA-1
SHA-1 è ancora sicuro da usare?
Perché Git usa ancora SHA-1?
--object-format=sha256. GitHub e i grandi forge stanno gradualmente implementando la modalità SHA-256. I repository esistenti possono essere convertiti, ma la migrazione è complessa a causa dei miliardi di ID commit esistenti. Devo migrare da SHA-1 a SHA-256?
Cos'è stato l'attacco SHAttered?
Le collisioni SHA-1 possono avvenire accidentalmente?
SHA-1 va bene per usi non di sicurezza come i checksum?
Quanto è lungo un hash SHA-1?
Il mio input viene inviato a un server?
crypto.subtle.digest('SHA-1', data)). Apri DevTools → scheda Network mentre fai l'hashing — vedrai zero richieste in uscita. I file che trascini vengono letti tramite la FileReader API e hashati localmente; i byte non lasciano mai la tua macchina. Questo rende lo strumento sicuro per fare l'hash di documenti riservati, certificati legacy o impronte di codice sorgente proprietario. Perché il mio output SHA-1 è diverso da sha1sum nella riga di comando?
echo 'hello' | sha1sum include un newline (\n) dopo 'hello', quindi fa l'hash di 'hello\n' non 'hello'. Usa echo -n 'hello' | sha1sum o printf '%s' 'hello' | sha1sum per rimuoverlo. Altre cause comuni: terminazioni di riga Windows (\r\n vs \n), BOM UTF-8 all'inizio del file, o differenze di codifica (UTF-8 vs Latin-1). Questo strumento codifica l'input come UTF-8 senza BOM prima dell'hashing. Strumenti correlati
Vedi tutti gli strumenti →Decodificatore JWT
Strumenti di sicurezza
Decodifica token JWT online con il nostro decodificatore JWT gratis. Ispeziona intestazione, payload, firma, scadenza e attestazioni. 100% browser — token mai fuori dal dispositivo. Nessuna registrazione, nessun tracciamento.
Generatore Hash MD5 e Strumento Checksum File
Strumenti di sicurezza
Genera hash MD5, SHA-256, SHA-1 e SHA-512 online gratis. Calcola l'hash di testo o file nel browser, verifica checksum e copia i risultati. Senza registrazione.
Generatore di Password Casuali — Personalizzabile e Sicuro
Strumenti di sicurezza
Genera password casuali sicure all'istante — gratis, 100% nel tuo browser. Personalizza lunghezza e caratteri, batch fino a 50 con analisi entropia.
Generatore Hash SHA-256 e Strumento Checksum
Strumenti di sicurezza
Genera hash SHA-256 online gratis. Calcola l'hash di testo o file nel browser, verifica checksum e copia l'output hex a 64 caratteri. Senza registrazione; i dati non lasciano mai la pagina.
Generatore Hash SHA-3 (Keccak SHA3-256)
Strumenti di sicurezza
Genera hash SHA-3 online gratis. Costruzione a spugna NIST FIPS 202 — lo standard post-SHA-2. Output SHA3-256 in 64 caratteri hex. Solo browser tramite js-sha3 caricato in modo lazy; zero upload.
Generatore Hash SHA-384 (Hash TLS Suite B)
Strumenti di sicurezza
Genera hash SHA-384 online — output hex a 96 caratteri, immune alle estensioni di lunghezza, conforme a NSA Suite B. Abbinato con AES-256-GCM in TLS. Tutto l'hashing gira nel tuo browser tramite Web Crypto API.