Waarom SHA-256-hashes verschillen en hoe je een bestand controleert

Twee SHA-256-berekeningen over dezelfde bytes leveren altijd dezelfde hash op. Verschillen de waarden echt, controleer dan eerst het geselecteerde bestand, het algoritme en eventuele onzichtbare tekens. Een onvolledige download, een spatie of een regeleinde is meestal al genoeg om het resultaat te veranderen. Vergelijk voordat je een gedownload bestand gebruikt de volledige hash met de hash die een betrouwbare bron publiceert.

Kies tussen een bestand en tekst

Gebruik de bestandshashcalculator, om een gedownloade PDF, een archief of een programma te controleren. Die berekent SHA-256 op basis van de bytes van het geselecteerde bestand. Kopieer de bestandsinhoud niet naar een tekstveld: dat kan de codering of regeleinden veranderen.

Kies de SHA-256-hashgenerator, om een tekenreeks te vergelijken. Die codeert de ingevoerde tekst als UTF-8 en berekent vervolgens de hash, inclusief spaties en regeleinden. Een tekstbestand en de tekst die op het scherm staat, vertegenwoordigen dus niet noodzakelijk dezelfde bytes.

Een download stap voor stap controleren

  1. Zoek de hash op de officiële website van de uitgever, voor de juiste versie en het juiste bestand. Een ZIP-archief en het document daarin hebben verschillende hashes.
  2. Controleer of de referentie SHA-256 gebruikt. Een hexadecimale SHA-256-waarde heeft 64 tekens. De standaard definieert een uitvoer van 256 bits. NIST-referentie, in het Engels.
  3. Klik in de bestandscalculator op “Kies een bestand”. Controleer de weergegeven bestandsnaam en grootte en klik op “SHA-256 berekenen”.
  4. Gebruik “Hash kopiëren” en vergelijk alle 64 tekens met de referentie. De knop kopieert alleen de hash; je moet die nog zelf vergelijken. De hexadecimale letters A–F en a–f vertegenwoordigen dezelfde waarden.
  5. Komen ze niet overeen, voer het bestand dan niet uit. Controleer de verwachte versie en download het opnieuw van de officiële bron. Blijft het verschil bestaan, vraag de uitgever dan om bevestiging.

Een voorbeeld met slechts één regeleinde

Voer in de tekstgenerator precies abc in, zonder aanhalingstekens, spaties of regeleinde. Klik op “Hash berekenen”. De drie UTF-8-bytes zijn hexadecimaal 61 62 63. Het resultaat is:

ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

Zet daarna de cursor achter de c, druk één keer op Enter en bereken opnieuw. Met dit LF-regeleinde heeft de invoer vier bytes: 61 62 63 0a. Het resultaat wordt:

edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb

Wil je deze resultaten met bestanden reproduceren, sla het eerste dan op als UTF-8 zonder BOM of afsluitend regeleinde en het tweede met precies één afsluitende LF. De calculator hoort respectievelijk 3 en 4 bytes te tonen. Sommige editors voegen automatisch een regeleinde toe: controleer die instelling.

Verschillen die je niet ziet

Een spatie na een woord, een tab of een lege regel maakt deel uit van de inhoud. LF- en CRLF-regeleinden gebruiken verschillende bytes. Een UTF-8-bestand met een BOM heeft ook extra bytes aan het begin vergeleken met dezelfde tekst zonder BOM.

Ook tekens met accenten kunnen verrassingen opleveren: een é en een e gevolgd door een combinerend accent kunnen er op het scherm hetzelfde uitzien maar verschillend zijn opgeslagen. De generator normaliseert ze niet automatisch. De tekstcoderingsinspecteur en UTF-8-converter, helpt je de BOM en regeleinden van tekstbestanden tot 5 MiB te bekijken. Je moet de voorgestelde codering bevestigen; zonder BOM is die niet altijd vast te stellen. Converteer het bestand niet voordat je de oorspronkelijke hash hebt gecontroleerd.

Wat de controle je vertelt

Een overeenkomende SHA-256-hash biedt een sterke integriteitscontrole, maar geen wiskundige garantie van uniciteit: hashfuncties zijn ontworpen om botsingen moeilijk vindbaar te maken. RFC 6234, in het Engels.

Dit bewijst niet dat het bestand onschadelijk is of dat de maker is wie die beweert te zijn. Als een aanvaller zowel een gewijzigd bestand als de bijbehorende hash levert, komen die overeen. De bron van de referentie blijft essentieel. Een digitale handtekening die met een vertrouwde sleutel wordt geverifieerd, biedt een afzonderlijke authenticiteitscontrole.

Controlelijst voordat je een conclusie trekt

Veelgestelde vragen

Verandert de hash als ik een bestand hernoem?

Nee: de naam maakt geen deel uit van de berekening. Het wijzigen van metadata die in het bestand zelf is opgeslagen, verandert wel de bytes en doorgaans ook de hash.

Kan ik een bestand uit zijn SHA-256-hash terughalen?

SHA-256 is geen versleuteling en heeft geen ontsleutelingssleutel. Een hash dient om gegevens te vergelijken, niet om ze te herstellen of een voorspelbaar geheim te verbergen.

Waarom mislukt de berekening bij een groot bestand?

De berekening blijft in de browser, maar het volledige bestand wordt in het geheugen geladen. De gebruikte API verwerkt de invoer niet als een stream, dus de praktische limiet hangt af van het apparaat en de browser. De pagina en bijbehorende bestanden worden nog steeds van de website geladen. MDN-documentatie, in het Engels.