Hashing is het proces waarbij je data door een eenrichtingsfunctie haalt die een vingerafdruk met een vaste lengte oplevert, een hash genoemd. Dezelfde invoer geeft altijd dezelfde hash, maar je kunt niet terugrekenen van de hash naar de invoer. Het is een checksum en een verzegelde envelop in één: je kunt een match controleren zonder ooit het origineel te zien.
Een goede vergelijking is een vleesmolen. Je kunt een biefstuk tot gehakt draaien, maar je krijgt van het gehakt nooit meer een biefstuk terug. Dat is de bedoeling van hashing, en het is waarom wachtwoorden worden gehasht in plaats van versleuteld. Als je inlogt, hasht de site wat je typt en vergelijkt dat met de opgeslagen hash. Lekt de database in een datalek, dan vinden aanvallers hashes in plaats van echte wachtwoorden, en daar hebben ze veel minder aan. Dit verschilt van data-encryptie, die juist bedoeld is om door de juiste persoon teruggedraaid te worden.
Moderne hashing voor wachtwoorden voegt een salt toe, willekeurige data die je voor het hashen meemengt, zodat identieke wachtwoorden tóch verschillende hashes opleveren. Algoritmes als bcrypt en Argon2 zijn met opzet traag gemaakt, wat massaal raden onhaalbaar maakt. Hashing heeft nog een tweede taak naast wachtwoorden. Met dezelfde vingerafdruktruc controleer je of een gedownload bestand niet is geknoeid. Verandert er één byte, dan verandert de hash volledig, dus een gepubliceerde hash werkt als een snelle controle die iedereen kan doen.
Bij TopDevs hashen en salten we wachtwoorden met beproefde algoritmes en slaan we ze nooit leesbaar op, zodat de inloggegevens onbruikbaar blijven voor wie ze ook meeneemt, zelfs als een database blootligt.