Generatore di hash: MD5, SHA-1, SHA-256, SHA-512 e HMAC
Calcola hash MD5, SHA-1, SHA-256, SHA-384 e SHA-512 o HMAC di testi o file nel browser e confrontali con un checksum atteso.
L’hash viene calcolato sul testo esattamente come è stato inserito, spazi e a capo compresi. Gli a capo in questo riquadro vengono trattati come LF.
Trascina qui un file o selezionane uno
Nessun file selezionato.
Questo file supera i 500 MB. L’intero file viene caricato in memoria, quindi il browser potrebbe esaurire la memoria o rallentare.
Risultati
Inserisci un testo o scegli un file per vederne gli hash.
I valori esadecimali vengono confrontati senza distinguere maiuscole e minuscole; i valori Base64 devono corrispondere esattamente.
Note
- Per MD5 e SHA-1 esistono attacchi di collisione noti, quindi non vanno usati per scopi di sicurezza. Usali solo per controlli non legati alla sicurezza, come confrontare un download con un checksum pubblicato.
- Un hash non è una crittografia. Questo strumento non può ricostruire il testo o il file originale a partire da un hash.
- Non usare semplici hash per memorizzare le password. Usa uno schema di hashing dedicato alle password, come Argon2, scrypt o bcrypt.
- Gli hash vengono calcolati sui byte, quindi lo stesso testo con fine riga diversi (CRLF o LF), una diversa codifica dei caratteri o spazi in più produce un hash diverso.
- HMAC combina un hash con una chiave segreta. HMAC-MD5 non è disponibile qui.
- Testi e file vengono elaborati nel browser e non sono inviati a LeedyBox. I file molto grandi possono risultare lenti, perché l’intero file viene letto in memoria.
Come si usa
- In «Input», scegli «Testo» per calcolare l’hash di un testo digitato o incollato, oppure «File» per calcolare quello di un file del tuo dispositivo.
- Per un file, selezionalo o trascinalo nel riquadro e premi «Calcola hash». Se in seguito modifichi la «Modalità HMAC» o la chiave, premi di nuovo il pulsante.
- Scegli un «Formato di output»: esadecimale minuscolo, esadecimale maiuscolo o Base64. Cambiare formato modifica solo il modo in cui sono scritti gli stessi risultati, quindi non viene ricalcolato nulla.
- Per calcolare HMAC invece di semplici hash, seleziona «Modalità HMAC» e inserisci la chiave segreta nel campo che compare. HMAC-MD5 non è disponibile, quindi la riga MD5 mostra «Non disponibile per HMAC».
- Per verificare un download, incolla il valore pubblicato in «Checksum atteso (facoltativo)». Viene confrontato con tutti i risultati calcolati e la riga corrispondente viene contrassegnata con «Corrisponde».
Domande frequenti
Perché il mio hash è diverso da quello di sha256sum o di un altro strumento?
La casella di testo calcola l’hash dei caratteri esattamente come li inserisci, quindi anche piccole differenze cambiano il risultato. Una causa frequente è un a capo finale: echo hello | sha256sum calcola l’hash di «hello» più un a capo, che dà uno SHA-256 diverso da quello di «hello» da solo, mentre printf hello | sha256sum non lo aggiunge. Anche caratteri che sembrano uguali possono essere memorizzati in modo diverso, per esempio é come un unico code point oppure come e seguita da un accento combinante. Per calcolare l’hash dei byte esatti di un file, usa «File» invece di incollarne il contenuto, perché la casella di testo codifica il testo in UTF-8 e tratta gli a capo come LF.
Il checksum pubblicato è corretto: perché non c’è corrispondenza?
Incolla solo il valore dell’hash. Spazi, tabulazioni e a capo vengono rimossi prima del confronto, quindi se incolli un’intera riga di un file di checksum il nome del file diventa parte del valore, e anche un prefisso come sha256: impedisce la corrispondenza. Il confronto avviene con tutti gli algoritmi calcolati, quindi non serve sceglierne uno. Se hai incollato solo il valore e ancora non corrisponde, controlla che la «Modalità HMAC» sia disattivata e che il checksum usi MD5, SHA-1, SHA-256, SHA-384 o SHA-512; altri algoritmi, come SHA-3 o BLAKE2, qui non vengono calcolati. Altrimenti, molto probabilmente il file è diverso da quello per cui è stato creato il checksum, per esempio un’altra versione o un download incompleto.
Che cosa significa un risultato che inizia con e3b0c442 o d41d8cd9?
Sono gli hash di un input vuoto (0 byte), scritti in esadecimale: il valore SHA-256 inizia con e3b0c442 e finisce con b855, mentre il valore MD5 è d41d8cd98f00b204e9800998ecf8427e. Con la «Modalità HMAC» disattivata, compaiono dopo aver svuotato la casella di testo o con un file di 0 byte. Se un tuo programma produce uno di questi valori per dati che non dovrebbero essere vuoti, molto probabilmente ha calcolato l’hash di una stringa vuota o di un file vuoto.
Posso verificare la firma di un webhook o di un’API con la modalità HMAC?
Spesso sì, se la firma è un HMAC con SHA-1, SHA-256, SHA-384 o SHA-512; HMAC-MD5 non è disponibile. Seleziona «Modalità HMAC», inserisci il segreto di firma, usa il corpo della richiesta come input e incolla la firma in «Checksum atteso (facoltativo)» senza un prefisso come sha256=; vengono riconosciute firme sia esadecimali sia Base64. L’input deve avere gli stessi byte che sono stati firmati, quindi un corpo JSON riformattato non corrisponderà, e un corpo con a capo CRLF va salvato come file ed elaborato con «File». Molti servizi firmano più del solo corpo, per esempio un timestamp e un separatore anteposti al corpo, quindi verifica nella documentazione del servizio che cosa viene firmato esattamente.
La mia chiave segreta è in esadecimale o Base64. Posso usarla?
Solo se il servizio usa il testo della chiave così com’è. Il campo «Chiave segreta (UTF-8)» usa i byte UTF-8 dei caratteri inseriti e non decodifica esadecimale né Base64, quindi se il servizio decodifica la chiave prima di firmare, l’HMAC calcolato qui non corrisponderà. Anche gli spazi all’inizio o alla fine del campo fanno parte della chiave.
Come creo un hash Subresource Integrity (SRI)?
Scegli «File», seleziona lo script o il foglio di stile, assicurati che la «Modalità HMAC» sia disattivata, premi «Calcola hash» e imposta il «Formato di output» su «Base64». Aggiungi sha384- davanti al valore SHA-384 per ottenere il valore dell’attributo integrity; sha256- e sha512- funzionano allo stesso modo. Il file deve essere identico byte per byte a quello che scarica il browser, altrimenti il browser si rifiuta di usarlo. Un file caricato da un’altra origine richiede anche l’attributo crossorigin, e il suo server deve consentire CORS.
Che differenza c’è tra l’output esadecimale e quello Base64?
Entrambi rappresentano lo stesso digest. L’esadecimale usa due caratteri per byte, cioè 64 caratteri per SHA-256, ed è il formato mostrato da strumenti come sha256sum; Base64 è più corto, 44 caratteri per SHA-256. L’output Base64 usa l’alfabeto standard con + e / e il riempimento =, non la variante URL-safe con - e _, quindi un valore nella variante URL-safe, o un valore senza il riempimento =, può non corrispondere nel confronto.