MiServe DevTools

I tuoi adesivi

Fissa qui gli strumenti. Restano salvati in questo browser.

Generatore di hash

Calcola i digest MD5, SHA-1, SHA-2, SHA-3, BLAKE2 e CRC-32 di un testo o di un file, tutti insieme.

Algoritmi

Funziona nel tuo browser con WebAssembly. Nulla di ciò che incolli viene caricato.

Informazioni su questo strumento

A cosa serve un hash

Una funzione di hash trasforma un input di lunghezza qualsiasi in un digest breve e di lunghezza fissa. Lo stesso input dà sempre lo stesso digest e, con le funzioni crittografiche di questa pagina, basta cambiare un solo bit perché il nuovo digest sembri del tutto scollegato dal primo. Per questo un digest funziona come un'impronta: se due digest sono diversi, gli input sono diversi, e se sono uguali gli input sono quasi certamente identici, senza bisogno di confrontarli byte per byte.

Gli usi tipici sono verificare un download con il checksum indicato da chi lo pubblica, individuare file duplicati o modificati e costruire chiavi di cache.

Quale algoritmo scegliere

Per tutto ciò che riguarda la sicurezza usa SHA-256, SHA-512, SHA-3 o BLAKE2. MD5 e SHA-1 non sono più sicuri, perché si possono produrre di proposito due input diversi con lo stesso digest, ma restano diffusi come semplici checksum. CRC-32 non è un hash crittografico e rileva solo la corruzione accidentale dei dati.

Nessuna di queste funzioni è adatta a memorizzare password, perché sono progettate per essere veloci. Per le password usa una funzione lenta e con salt, come bcrypt.

SHA3-256 qui è la funzione standardizzata in FIPS 202. Il Keccak-256 usato da Ethereum è precedente allo standard e, a parità di input, dà digest diversi.

Come vengono calcolati e scritti i digest

I digest sono calcolati dai package di hash di Go (la libreria standard, e golang.org/x/crypto per BLAKE2) compilati in WebAssembly ed eseguiti in un Web Worker, fuori dal thread principale della pagina. Un file viene letto a blocchi di 8 MB, quindi anche un file grande viene elaborato senza caricarlo tutto in memoria, e non lascia mai il tuo dispositivo.

Un digest è una sequenza di byte. hex e HEX scrivono ogni byte come due cifre esadecimali, mentre base64 scrive gli stessi byte in Base64, la forma usata negli attributi Subresource Integrity. Il campo di confronto accetta entrambe le notazioni, con o senza il nome dell'algoritmo davanti, come in sha256-… o sha256:….

Domande

Il mio file viene caricato per calcolare l'hash?

No. Il file viene letto dal tuo browser e l'hash viene calcolato sul tuo dispositivo. Lo strumento non lo invia da nessuna parte, e la Content-Security-Policy del sito non permette alla pagina di connettersi ad altri host.

Perché il mio MD5 è diverso da quello di un altro strumento?

Di solito l'input differisce in modo invisibile: un a capo finale, le terminazioni di riga di Windows, un byte order mark o una codifica del testo diversa. Questo strumento calcola l'hash dei caratteri nella casella codificati in UTF-8 e non aggiunge nulla. Un a capo nella casella è sempre un singolo line feed, quindi per calcolare l'hash di un testo con terminazioni di riga Windows salvalo in un file e scegli quel file.

Si può invertire un hash per risalire al testo originale?

No. Una funzione di hash scarta informazione, quindi non c'è niente da decifrare. Gli input brevi o comuni si possono comunque trovare tirando a indovinare e confrontando i digest, ed è per questo che le password richiedono una funzione lenta e con salt.

Che differenza c'è tra SHA-2 e SHA-3?

Sono progetti diversi, entrambi standardizzati dal NIST. SHA-2, la famiglia di SHA-256 e SHA-512, è da tempo la scelta predefinita. SHA-3 si basa sulla costruzione a spugna di Keccak ed è stato standardizzato come alternativa di progettazione diversa, nel caso in cui un giorno si trovi una debolezza in SHA-2. Oggi entrambi sono considerati sicuri.

Altri strumenti in Hash