Un hash è l'impronta digitale di un dato: una funzione trasforma qualsiasi input in una stringa di lunghezza fissa, in modo non reversibile e sensibilissimo (un bit cambiato = impronta completamente diversa). Usi: verificare l'integrità dei file, le firme, le strutture dati – e le password.
Sulle password, il punto delicato: il database non deve contenere password ma hash, così un breach non le rivela. Ma gli hash veloci (MD5, SHA-256) qui sono un errore: una GPU ne prova miliardi al secondo. Servono funzioni volutamente lente e costose in memoria – argon2 (lo standard attuale) o bcrypt – con un salt unico per utente che neutralizza le tabelle precalcolate. Nota storica: MD5 e SHA-1 sono rotti anche per l'integrità; per tutto il resto, SHA-256 in su – è la catena di hash che rende tamper-evident i log di RainLogs.