Hashing
Hashing is een techniek waarmee je data omzet naar een korte, unieke code (een zogeheten hash). Die hash is altijd even lang, ongeacht hoe groot de originele data is. En belangrijker nog: je kunt die hash niet zomaar terugvertalen naar het origineel. Dat maakt hashing perfect voor het veilig opslaan of controleren van gegevens, zonder dat je de originele data hoeft te bewaren.
Inhoudsopgave
Eénrichtingsverkeer voor je data
Hashing werkt in één richting: van data naar code. Niet andersom. Je voert bijvoorbeeld een wachtwoord in, de software maakt daar een hash van en bewaart alleen die hash. Wanneer je opnieuw inlogt, wordt jouw invoer weer gehasht en vergeleken met de opgeslagen versie. Is er een match? Dan weet het systeem dat jij het bent.
Zelfs een minimale aanpassing in de input (bijvoorbeeld een hoofdletter) levert een totaal andere hash op. Zo weet je zeker dat er nergens mee geknoeid is en dat maakt hashing ook nuttig bij integriteitschecks van bestanden.
Altijd hetzelfde, maar nooit te herleiden
Een hash is altijd uniek voor een specifieke input, maar je kunt uit een hash nooit afleiden wat de originele data was. Dat is wat hashing zo veilig maakt.
Welkom123 wordt misschien gehasht als 5f4dcc3b5aa765d61d8327deb882cf99. Maar Welkom124 levert een compleet andere hash op.
Voor kwaadwillenden heeft een gestolen hash dus weinig waarde, tenzij je een zwak algoritme gebruikt of voorspelbare data hebt. Daarom is het slim om hashing te combineren met technieken zoals salting (een unieke toevoeging per hash) en sterke algoritmes zoals SHA-256.
Een slot zonder sleutelgat
Hashing wordt vaak verward met encryptie, maar het zijn echt twee verschillende dingen. Encryptie kun je ontcijferen (met de juiste sleutel), maar hashing juist niet. Het is bedoeld om te controleren of iets klopt, niet om iets later weer terug te halen.
Wil je data kunnen teruglezen? Dan versleutel je. Wil je alleen kunnen verifiëren? Dan hash je.
Onzichtbaar, maar overal
Je merkt het misschien niet, maar hashing zit in veel van wat je dagelijks gebruikt. Denk aan inloggen bij je bank, het controleren van software-updates, het versturen van e-mails of het beheren van blockchaintransacties. Zolang je iets moet controleren zonder het prijs te geven, is hashing je vriend.
Veelgestelde vragen
Encryptie kun je terugdraaien (met een sleutel), hashing niet. Hashing is puur voor verificatie of veilige opslag zonder originele data.
Omdat het veiliger is. Als iemand je database steelt, heeft hij alleen de hashes, niet de wachtwoorden zelf.
In theorie kan dat, via brute force. Maar in de praktijk blijkt het moeilijk, zeker als je goede algoritmes en salting gebruikt.
SHA-256, bcrypt en Argon2 zijn veelgebruikte en veilige algoritmes voor hashing van wachtwoorden en data.
Gerelateerde begrippen
- Alpha testing
- App
- Beta testing
- Big O Notation
- Branch
- Breadth-First Search
- Co-pilot
- Continuous Integration
- Domain Name System
- Error handling
- Event Driven Language
- Functional language
- IMAP
- JSON API
- Merge
- NoSQL
- Ontwerppatroon
- Query
- Server-side scripting
- Set
- Sorteeralgoritme
- SSL-certificaat
- Strategy pattern
- Try-catch