raatools/

Generatore hash

Genera hash crittografici da qualsiasi testo.

Cos'è un hash crittografico?

Una funzione di hash crittografico prende qualsiasi input — un singolo carattere, un documento o un intero file — e produce una stringa di lunghezza fissa di caratteri esadecimali chiamata digest. Lo stesso input produce sempre lo stesso hash, ma anche un minimo cambiamento nell'input produce un output completamente diverso. Questa proprietà si chiama effetto valanga.

Le funzioni hash sono unidirezionali: non è possibile risalire all'input originale dall'hash. Questo le rende fondamentalmente diverse dalla crittografia, che è progettata per essere reversibile con la chiave corretta. L'hashing viene usato per la verifica dell'integrità dei dati, l'archiviazione delle password, le firme digitali e molte altre applicazioni di sicurezza.

Algoritmi di hash supportati

  • SHA-1: SHA-1 produce un hash a 160 bit (40 caratteri hex). Era lo standard per i certificati TLS e i commit Git, ma nel 2017 sono state scoperte vulnerabilità crittografiche. SHA-1 è ora deprecato per uso di sicurezza, ma rimane comune per checksum non di sicurezza.
  • SHA-256: SHA-256 produce un hash a 256 bit (64 caratteri hex). È l'algoritmo più usato oggi, a protezione delle connessioni TLS, delle transazioni Bitcoin, dei certificati di firma del codice e della verifica dei pacchetti software.
  • SHA-384: SHA-384 produce un hash a 384 bit (96 caratteri hex). È una versione troncata di SHA-512, comunemente usata nelle catene di certificati TLS e nelle costruzioni HMAC dove si desidera un margine di sicurezza extra.
  • SHA-512: SHA-512 produce un hash a 512 bit (128 caratteri hex). Offre la massima robustezza nella famiglia SHA-2 e può essere più veloce di SHA-256 sui processori a 64 bit perché opera nativamente su parole a 64 bit.

Usi comuni dell'hashing

  • Verifica dell'integrità dei file confrontando i checksum dopo il download.
  • Archiviazione sicura delle password nei database (sempre con un sale unico per utente).
  • Generazione di firme digitali per documenti e pacchetti software.
  • Cache-busting nello sviluppo web aggiungendo hash del contenuto ai nomi dei file.
  • Creazione di identificatori univoci basati sul contenuto nei sistemi distribuiti.

Hashing vs. crittografia

La crittografia è reversibile — è possibile decifrare i dati con la chiave corretta. L'hashing è una funzione unidirezionale — non è possibile recuperare il testo originale da un hash. Questo rende l'hashing ideale per le password (si deve solo verificare, non recuperare) e per i controlli di integrità (si deve solo rilevare le modifiche).

Il mio testo è al sicuro?

Tutto l'hashing usa la Web Crypto API integrata nel browser (crypto.subtle). Il testo non viene mai trasmesso ad alcun server. La Web Crypto API è lo stesso motore crittografico usato da HTTPS, garantendo implementazioni di livello industriale di ogni algoritmo.

Domande frequenti

Due input diversi possono produrre lo stesso hash?

Teoricamente sì — questo si chiama collisione. Tuttavia, per SHA-256, trovare una collisione richiede circa 2¹²⁸ operazioni, il che è computazionalmente infattibile con la tecnologia attuale o prevedibile. Le collisioni SHA-1 sono state dimostrate, motivo per cui è stato deprecato.

Quale algoritmo di hash dovrei usare?

Per la maggior parte degli scopi, SHA-256 è la scelta migliore. Offre sicurezza elevata, ampia compatibilità ed eccellenti prestazioni. Usare SHA-512 se si ha bisogno di un margine di sicurezza extra o si lavora su sistemi a 64 bit dove potrebbe essere più veloce. Evitare SHA-1 per qualsiasi applicazione sensibile alla sicurezza.