Hash
Een hash is een functie die de ene waarde omzet in een andere. Het hashen van gegevens is een veelgebruikte praktijk in de computerwetenschap en wordt voor verschillende doeleinden gebruikt. Voorbeelden zijn cryptografie, compressie, het genereren van controlesommen en het indexeren van gegevens.
Hashing is zeer geschikt voor cryptografie, omdat de oorspronkelijke gegevens worden verhuld met een andere waarde. Een hashfunctie kan worden gebruikt om een waarde te genereren die alleen kan worden gedecodeerd door de waarde op te zoeken in een hashtabel. De tabel kan een array, database of andere gegevensstructuur zijn. Een goede cryptografische hashfunctie is niet-inverteerbaar, wat betekent dat deze niet door middel van reverse engineering kan worden teruggedraaid.
Verschillende soorten compressie, zoals lossy beeldcompressie en mediacompressie, kunnen hashfuncties gebruiken om de bestandsgrootte te verkleinen. Door gegevens te hashen naar kleinere waarden, kunnen mediabestanden worden gecomprimeerd tot kleinere delen. Dit type eenrichtingshashing kan niet worden teruggedraaid, maar kan wel een benadering van de oorspronkelijke gegevens opleveren die minder schijfruimte vereist.
Hashes worden ook gebruikt om controlesommen te maken, waarmee de integriteit van bestanden wordt gecontroleerd. Een controlesom is een kleine waarde die wordt gegenereerd op basis van de bits in een bestand of gegevensblok, zoals een schijfkopie. Wanneer de controlesomfunctie wordt uitgevoerd op een kopie van het bestand, zoals een bestand dat van internet is gedownload, moet deze dezelfde gehashte waarde opleveren als het oorspronkelijke bestand. Als het bestand niet dezelfde controlesom oplevert, is er iets in het bestand gewijzigd.
Ten slotte worden hashes gebruikt om gegevens te indexeren. Gehashte waarden kunnen worden gebruikt om gegevens toe te wijzen aan afzonderlijke "buckets" binnen een hashtabel. Elke bucket heeft een unieke ID die als verwijzing naar de oorspronkelijke gegevens dient. Hierdoor ontstaat een index die aanzienlijk kleiner is dan de oorspronkelijke gegevens, zodat de waarden efficiënter kunnen worden doorzocht en geopend.
Test je kennis