Posso davvero fidarmi che il file non venga caricato da qualche parte?
Sì, ed è verificabile in due click. Apri gli strumenti per sviluppatori del browser (F12 nella maggior parte dei casi), vai sul pannello Network e inizia a registrare. Trascina un file nella zona di drop e calcola gli hash. Vedrai zero richieste HTTP uscire dal browser durante il calcolo. Tutta la lettura del file e il calcolo degli hash avvengono nel tab, senza coinvolgere la rete.
Perché MD5 e SHA-1 sono marcati come algoritmi legacy?
Per MD5 la prima collisione completa è stata pubblicata nel 2004 da Wang, Feng, Lai e Yu, e nel 2008 Stevens e altri hanno costruito due certificati X.509 con hash MD5 identico. Da allora produrre una collisione MD5 è alla portata di un laptop. Per SHA-1 la prima collisione pratica è stata dimostrata da Google nel 2017 con il progetto SHAttered. Nel 2020 Leurent e Peyrin hanno pubblicato "SHA-1 is a Shambles", una collisione del tipo più pericoloso (chosen-prefix) ottenibile per circa 45.000 dollari di tempo GPU in noleggio: a quel punto tutti gli attacchi che erano pratici su MD5 sono diventati pratici anche su SHA-1. La conseguenza è che entrambi non offrono più la garanzia che era alla base della loro adozione, e gli usi che dipendono da quella garanzia (firme, autenticazione di download contro un avversario, certificati) devono usare SHA-256 o superiore.
Quindi sono ufficialmente deprecati?
Sì, da enti di standardizzazione diversi e con tempi diversi. L'IETF ha pubblicato RFC 6151 nel 2011 dichiarando che MD5 "non deve essere usato" dove serve resistenza alle collisioni e che le nuove specifiche non devono adottarlo. NIST ha annunciato il ritiro ufficiale di SHA-1 il 15 dicembre 2022 e ha fissato la deadline di transizione al 31 dicembre 2030 per i moduli crittografici certificati FIPS. La bozza pubblica di NIST SP 800-131A Rev. 3 (ottobre 2024) formalizza il calendario di ritiro anche per gli hash a 224 bit e per altri primitivi datati. In pratica, dal 2030 i moduli crittografici certificati non potranno più usare SHA-1 per scopi che richiedono resistenza alle collisioni.
Allora perché lasciarli nel tool?
Perché esistono ancora casi legittimi: verificare l'integrità di un download contro la corruzione accidentale (no avversario), confrontare l'hash di un file con un manifest storico, leggere checksum pubblicati anni fa, lavorare con sistemi legacy che li usano internamente per identificatori non security-critical. Restano nella tabella, in fondo e con un badge esplicito, perché chi ha bisogno di calcolarli abbia uno strumento, e chi non li conosce a fondo veda subito che si trovano in una categoria a parte.
Perché BLAKE3, Whirlpool e Tiger non sono inclusi?
BLAKE3 in versione corretta richiede una struttura a Merkle parallela: le implementazioni mature sono compilate, e per coerenza con il resto di questo dominio (tutto in JavaScript ispezionabile dal browser) preferiamo non includerlo finché non c'è una versione pure-JS auditabile a costo accettabile. Whirlpool e Tiger sono algoritmi ormai di nicchia, usati quasi esclusivamente in contesti legacy specifici (Direct Connect, Gnutella, alcuni progetti accademici): se servono, gli strumenti dedicati a riga di comando li gestiscono già.
E password hashing? Posso usare questo tool per hashare password?
No, nessuno degli algoritmi presenti è adatto. Per le password servono funzioni progettate apposta per essere lente e per richiedere molta memoria: argon2id (raccomandazione 2026), bcrypt (legacy ma ancora valido), scrypt. Vivono lato server, applicate a un input strutturato (con salt univoco per utente). Un tool web di calcolo hash non è il posto giusto: in produzione vanno integrate nel sistema di autenticazione, non calcolate manualmente.
Il mio file è da 500 MB, come faccio?
Usa la riga di comando, è più efficiente perché legge il file a chunk con progress nativo. Su Linux o macOS: sha256sum file.iso oppure shasum -a 256 file.iso. Su Windows in cmd.exe: certutil -hashfile file.iso SHA256. In PowerShell: Get-FileHash file.iso -Algorithm SHA256. Per BLAKE2 su Linux: b2sum file.iso.
Perché lo stesso file mi dà hash diversi tra il browser e la riga di comando?
Per file binari (immagini, archivi, ISO, eseguibili) gli hash sono bit-per-bit identici. Quando vedi differenze su input testuali, di solito il colpevole è uno tra: line ending diversi (CR/LF/CRLF), un carattere di nuova riga aggiunto in coda dalla shell (echo "text" | sha256sum aggiunge un \n), un BOM UTF-8 presente in un file e non nell'altro. Per il calcolo di hash su testo ricordati di confrontare lo stesso identico flusso di byte.
Cosa significa la dimensione (16 B, 32 B, 64 B)?
È la lunghezza dell'output in byte raw, prima della codifica esadecimale. MD5 produce 16 byte (32 caratteri esadecimali), SHA-256 produce 32 byte (64 caratteri), SHA-512 produce 64 byte (128 caratteri). La codifica esadecimale raddoppia la lunghezza testuale per rendere l'output leggibile e copiabile come stringa.
Funziona offline?
Sì. Una volta caricata la pagina puoi disconnettere la rete: il calcolo continua a funzionare. Tutti i diciotto algoritmi vivono nel browser, nessuna API esterna viene chiamata.
Gli hash che produco qui sono compatibili con quelli di sha256sum o di OpenSSL?
Sì, byte per byte. Le implementazioni passano i vettori di test ufficiali RFC e NIST: SHA-256 prodotto qui coincide con sha256sum, OpenSSL EVP_sha256, Python hashlib.sha256. SHA-3 coincide con openssl dgst -sha3-256. BLAKE2b coincide con b2sum. Se vedi differenze, è quasi certamente un problema di encoding o line ending nell'input.