Hashing

Wat is Hashing?

Hashing is het toepassen van een berekening (cryptografische hashfunctie) om gegevens van verschillende omvang te veranderen naar gegevens met dezelfde omvang.

Hashing kan een tabel met grote en kleine gegevens veranderen in een tabel met gegevens met dezelfde lengte, bijvoorbeeld 64 karakters. Dit proces kan makkelijk de ene kant op (naar de hashwaardes), maar is bedoeld om het moeilijker te maken de andere kant op te gaan (naar de oorspronkelijke waardes).

Cryptografische hashfuncties (zoals SHA en MD5) zijn zo ontworpen dat er voor verschillende invoergegevens zo min mogelijk dubbeling ontstaat van dezelfde hashwaarden.

Als je één hashwaarde ziet, kun je niet raden wat de invoer was. Behalve door verschillende invoergegevens te proberen, net zo lang totdat je de gezochte hashwaarde tegenkomt.

Gebruik hashing

Organisaties kunnen hashing gebruiken als methode om persoonsgegevens te pseudonimiseren. Gegevens als BSN, telefoonnummer, IP-adres of e-mailadres vervangen zij dan door een hash.

Hashing is handig

Hashing is handig om bijvoorbeeld wachtwoorden op te slaan. In zo’n geval wordt een wachtwoord gehashed opgeslagen. Op het moment dat de identiteit van iemand geverifieerd wordt, wordt de hash van het wachtwoord vergeleken wordt met de hash dat in de database opgeslagen staat. Op deze manier kan men controleren of iemand het juiste wachtwoord ingevoerd heeft zonder dat dat wachtwoord opgeslagen is op een manier die terug te rekenen is naar het oorspronkelijke wachtwoord.

Md5 hashing

In de onderstaande voorbeelden maken we gebruik van md5 hashing; dat is een vorm van hashing die altijd een unieke 128 bit code teruggeeft. Hashing kan van alle data ongeacht de hoeveelheid een code genereren met de volgende eigenschappen:

  • Lengte: De lengte van een gegenereerde hash wordt door het algoritme wat het genegeerd bepaald. Md5 hashing zal altijd een 128 bits (32 cijferig hexdecimaal) code als output genereren.
  • Geen collisions: Twee verschillende files mogen nooit dezelfde hash genereren.
  • Herbruikbaar: Een gehashte file of tekst moet altijd dezelfde hash genereren
  • Niet terug te draaien: Een hash mag niet terug te rekenen zijn naar de oorspronkelijke tekst

Voorbeeld gehashte varianten

Naam: Peter

Wachtwoord: 123456

Hash van wachtwoord: e10adc3949ba59abbe56e057f20f883e