Skip to content

SHA-1 Hash Generator (160-bit, verouderd)

Genereer SHA-1 hashes in je browser — 40-tekens hex output, geen upload. Verouderd algoritme voor Git-vingerafdrukken, oude certificaatcontroles en migratieaudits. Je data verlaat je apparaat niet.

Geen tracking Draait in je browser Gratis
⚠️ SHA-1 is een verouderd algoritme. Gebruik SHA-256 voor nieuw werk. Alle hash-berekeningen worden lokaal uitgevoerd — er worden geen gegevens geüpload.
Algoritme
Beoordeeld op SHA-1 correctheid aan de hand van NIST FIPS 180-1 testvectoren; verouderingsbelichting geverifieerd aan de hand van NIST SP 800-131A — Go Tools Engineering Team · May 28, 2026

Wat is SHA-1?

SHA-1 (Secure Hash Algorithm 1) is een 160-bit cryptografische hashfunctie die in 1995 door NIST werd gepubliceerd als FIPS 180-1. Het werd ontworpen door de Amerikaanse National Security Agency als vervanger voor SHA-0 (een gebrekkige eerdere versie die snel werd ingetrokken in 1993) en was het dominante hash-algoritme voor digitale handtekeningen, TLS-certificaten en code signing gedurende de jaren 2000.

Geschiedenis van doorbraken: In 2005 publiceerde het team van Xiaoyun Wang een theoretische aanval die de collision-weerstand van SHA-1 verlaagde van de verwachte 2^80 naar 2^63 bewerkingen — een theoretische doorbraak, maar nog niet praktisch. In februari 2017 publiceerden Google en CWI Amsterdam de SHAttered-aanval, waarbij twee afzonderlijke PDF-documenten met identieke SHA-1 hashes werden geproduceerd met ongeveer 110 GPU-jaren rekentijd. Dit was de definitieve praktische doorbraak. NIST had SHA-1 al in 2011 verouderd verklaard voor handtekeningen (NIST SP 800-131A); browserleveranciers en certificaatautoriteiten volgden door SHA-1 certificaatondersteuning te verwijderen in 2016–2017.

Huidige status: SHA-1 is verouderd voor alle beveiligingsgevoelige toepassingen — digitale handtekeningen, certificaatvingerafdrukken, wachtwoordopslag en code signing. Het blijft aanwezig in Git's object-ID formaat (commit hashes), waar het wordt gebruikt voor content-adressering in plaats van beveiliging, en in verouderde software checksums. Het Git-project voegde SHA-256 object formaat ondersteuning toe in versie 2.29 (oktober 2020). Alle nieuwe projecten moeten SHA-256 of sterker gebruiken.

Deze tool berekent SHA-1 volledig in je browser via crypto.subtle.digest('SHA-1', ...) van de Web Crypto API. De 40-tekens hex output is identiek aan wat sha1sum, openssl dgst -sha1 of git hash-object produceren. Er worden geen bytes naar een server verstuurd.

SHA-1 versus de SHA-2 familie: SHA-1 produceert 40 hex-tekens (160 bits). SHA-256 produceert 64 hex-tekens (256 bits) en heeft geen bekende zwakheden. MD5 produceert 32 hex-tekens (128 bits) en was eerder gebroken (2004). Voor elk nieuw hash-werk is SHA-256 de standaardkeuze.

// Hash text using Web Crypto API (SHA-1 — legacy use only)
async function sha1(text) {
  const data = new TextEncoder().encode(text);
  const hash = await crypto.subtle.digest('SHA-1', data);
  return Array.from(new Uint8Array(hash))
    .map(b => b.toString(16).padStart(2, '0'))
    .join('');
}

await sha1('Hello, World!');
// → '0a0a9f2a6772942557ab5355d76af442f8f65e01'
// ⚠️ SHA-1 is broken — use SHA-256 for new work.

SHA-1 voorbeelden

Git commit-vingerafdruk opzoeken

tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904
author A Dev <dev@example.com> 1716854400 +0000
committer A Dev <dev@example.com> 1716854400 +0000

Initial commit

Git slaat elke commit op als een blob waarvan de SHA-1 wordt berekend uit de commit-header plus inhoud in precies dit formaat. De 40-tekens hex string die `git log` toont is een directe SHA-1 vingerafdruk. Plak de ruwe commit-objecttekst hier om dezelfde hash te reproduceren — handig bij het debuggen van `git cat-file` output of het verifiëren dat een mirror-repository de geschiedenis niet heeft gemanipuleerd. Let op: Git 2.29+ ondersteunt de SHA-256-modus (git init --object-format=sha256), en GitHub's objectopslag zal uiteindelijk migreren. Gebruik voor nieuwe repositories de SHA-256-modus.

Verouderde TLS-certificaatvingerafdruk verifiëren

-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJAKlL...
-----END CERTIFICATE-----

Vóór 2017 toonden browsers certificaatvingerafdrukken als 40-tekens SHA-1 hex strings. Certificaatautoriteiten stopten in januari 2016 met het uitgeven van SHA-1-ondertekende certificaten, en alle grote browsers verwijderden de ondersteuning begin 2017. Als je een oud intern certificaat controleert of een verouderd IoT-apparaat valideert, plak dan het PEM-body hier om de SHA-1 vingerafdruk ter vergelijking te reproduceren. Moderne workflows gebruiken de 64-tekens SHA-256 vingerafdruk.

Verificatie van verouderde software-download

node-v0.12.7-linux-x64.tar.gz

Sommige oudere softwarearchieven publiceren nog steeds alleen een SHA-1 checksum naast de download. Hoewel dit basale detectie van beschadiging biedt (geen bescherming tegen manipulatie), is het nog steeds beter dan geen checksum. Gebruik het tabblad Bestand om het archief te verwerken, bereken de SHA-1 en vergelijk het met de gepubliceerde waarde van de uitgever. Als SHA-256 ook beschikbaar is, geef daar altijd de voorkeur aan. Gebruik voor nieuwe archieven SHA-256 of SHA-512 checksums.

SHAttered collision demonstratie

(Plak de Google/CWI shattered-1.pdf via het tabblad Bestand)

In februari 2017 publiceerden Google en CWI Amsterdam de SHAttered-aanval — de eerste praktische SHA-1 collision. Ze produceerden twee verschillende PDF-bestanden (shattered-1.pdf en shattered-2.pdf) die hashen naar dezelfde SHA-1 waarde: 38762cf7f55934b34d179ae6a4c80cadccbb7f0a. Als je een van beide PDF's in het tabblad Bestand van deze tool plaatst, wordt precies die hash gegenereerd, wat bewijst dat de collision echt is. Deze demonstratie is het duidelijkste bewijs waarom SHA-1 gebroken is: twee verschillende documenten met dezelfde vingerafdruk betekent dat de vingerafdruk niet langer een betrouwbare identiteit is. Gebruik SHA-256 voor alle nieuwe workflows voor documentintegriteit.

Zo genereer je SHA-1 hashes

  1. 1

    Tekst plakken of bestand slepen

    Selecteer het tabblad Tekst en plak een willekeurige string — een commit-bericht, certificaat-body of verouderde checksum-invoer — in het invoerveld. De SHA-1 hash wordt bijgewerkt terwijl je typt. Voor bestanden ga je naar het tabblad Bestand en sleep je een bestand naar de dropzone; de browser verwerkt het lokaal zonder upload.

  2. 2

    De 40-tekens hash kopiëren

    Klik op de knop Kopiëren naast de hash output. De volledige 40-tekens hex string in kleine letters gaat naar je klembord. Gebruik de schakelaar Hoofdletters als je verouderde systeem hoofdletters hex verwacht — sommige oudere tools en Windows API's gebruiken standaard hoofdletters.

  3. 3

    Vergelijken met een verouderde vingerafdruk

    Ga naar het tabblad Vergelijken en plak twee SHA-1 hashes naast elkaar om te bevestigen dat ze overeenkomen. Handig voor het valideren van een verouderde uitgever-checksum, het controleren van een gespiegelde Git-repository, of het controleren van een oude TLS-certificaatvingerafdruk uit een document dat dateert van vóór de SHA-256 adoptie.

Technische details

Algoritme: Merkle-Damgård-constructie, 80 rondes
SHA-1 verwerkt invoer in 512-bit (64-byte) blokken, waarbij 80 rondes van bitsgewijze bewerkingen worden toegepast, verdeeld in vier 20-ronde fasen, elk met een andere logische functie (Ch, Parity, Maj, Parity) en een additieve constante afgeleid van vierkantswortels van kleine gehele getallen. De initiële hash-toestand bestaat uit vijf 32-bit woorden (A–E), en de uiteindelijke hash is de aaneenschakeling van die woorden na het laatste blok. Implementatie gedefinieerd in FIPS 180-1 (1995), vervangen door FIPS 180-4 (2015) die formeel verouderingstaal bevat.
Output: 160 bits, 40 hexadecimale tekens
Altijd precies 40 kleine hexadecimale tekens (160 bits = 20 bytes, gecodeerd als 2 hex-tekens per byte). De output-lengte is vast, ongeacht de invoergrootte. Vergeleken met SHA-256's 64 tekens biedt de kortere output minder bits collision-weerstand — een sleutelfactor waarom SHA-1 eerder dan SHA-256 werd gebroken.
Prestaties: snel, maar dat is juist het probleem
SHA-1 is snel — doorgaans 400–700 MB/s in een browser via Web Crypto, vergelijkbaar met SHA-256. Voor een aanvaller is deze snelheid een voordeel: een moderne GPU-cluster kan miljarden SHA-1 hashes per seconde berekenen, waardoor brute-force en collision-zoekopdrachten worden versneld. Snelheid is de reden waarom SHA-1 (net als MD5) nooit mag worden gebruikt voor wachtwoordopslag — gebruik bcrypt, scrypt of Argon2.
Standaarden: FIPS 180-1 (1995) — verouderd in FIPS 180-4 context
SHA-1 werd gestandaardiseerd in FIPS 180-1 (1995), ter vervanging van het gebrekkige SHA-0. NIST heeft SHA-1 voor digitale handtekeningen verouderd verklaard in NIST SP 800-131A (2011) en in FIPS 186-5 (2023) formeel verboden voor alle generatie van digitale handtekeningen. RFC 6194 (2011) documenteerde bekende beveiligingsoverwegingen. De W3C WebCrypto API bevat SHA-1 nog voor verouderde interoperabiliteitsredenen, waardoor deze browsertool het kan berekenen.

Aanbevolen aanpak

Gebruik SHA-1 nooit voor beveiligingsgevoelige bewerkingen
SHA-1 is verouderd voor digitale handtekeningen, TLS-certificaten, code signing, wachtwoordopslag en elke workflow waarbij collision-weerstand van belang is. De SHAttered-aanval van 2017 demonstreerde praktische collisions. Migreer voor alle beveiligingstoepassingen naar SHA-256 of SHA-3. Het kostenverschil is verwaarloosbaar op moderne hardware — SHA-256 is hardwareversneld in alle huidige CPU's en GPU-pipelines.
SHA-1 voor verouderde vingerafdruk-opzoekopdrachten is acceptabel
Als je een pre-2017 bestandschecksum moet verifiëren, een Git commit-ID moet opzoeken of een oude certificaatvingerafdruk voor auditdoeleinden moet inspecteren, is SHA-1 geschikt. De hash zelf wordt niet gebruikt voor een vertrouwensbeslissing — je reproduceert alleen een bekende vingerafdruk ter referentie. Documenteer dit expliciet in je auditlogs: 'SHA-1 gebruikt voor verouderde referentie alleen, niet voor beveiligingsvalidatie.'
Hash altijd UTF-8 bytes, niet Unicode code-punten
SHA-1, net als alle hash-algoritmen, werkt op bytes, niet op tekens. Dezelfde string gecodeerd als UTF-8 versus UTF-16 produceert verschillende hashes. Deze tool codeert invoer altijd als UTF-8 zonder BOM vóór het hashen. Als je een systeem moet matchen dat een andere codering gebruikt (Windows UTF-16-LE, Latin-1), moet je de invoer extern vooraf coderen voordat je hashes vergelijkt.
Gebruik constante-tijd vergelijking bij het verifiëren van hashes in code
Als je twee SHA-1 hashes in code vergelijkt, gebruik dan een constante-tijd gelijkheidscontrole — Node.js crypto.timingSafeEqual(), Python hmac.compare_digest() — in plaats van naïeve stringvergelijking (=== of ==). Naïeve vergelijking lekt timing-informatie die theoretisch een aanvaller in staat stelt de verwachte hash byte voor byte te reconstrueren. Dit is een defense-in-depth maatregel, zelfs voor verouderde SHA-1 verificatie.

Veelgestelde vragen over SHA-1

Is SHA-1 nog veilig om te gebruiken?
Nee. SHA-1 was theoretisch verzwakt in 2005, en in februari 2017 demonstreerden Google en CWI Amsterdam de eerste praktische collision via de SHAttered-aanval — twee verschillende PDF-bestanden met identieke SHA-1 hashes. NIST heeft SHA-1 voor digitale handtekeningen verouderd verklaard in 2011 (NIST SP 800-131A) en alle grote browsers en certificaatautoriteiten stopten in 2017 met het accepteren van SHA-1 certificaten. SHA-1 is gebroken voor elk beveiligingsgevoelig gebruik: handtekeningen, certificaten, wachtwoordopslag. Schakel voor al het nieuwe werk over naar SHA-256.
Waarom gebruikt Git nog steeds SHA-1?
Git gebruikt SHA-1 voor object-ID's (commit hashes, tree hashes, blob hashes) omdat het in 2005 is ontworpen toen SHA-1 nog breed vertrouwd werd. Het gebruik door Git is geen cryptografische handtekening — het is een content-adresseringsschema dat wordt gebruikt om accidentele corruptie te detecteren, niet opzettelijke manipulatie. Het Git-project migreert sinds Git 2.29 (2020), dat --object-format=sha256 ondersteuning toevoegde. GitHub en grote forges rollen de SHA-256-modus geleidelijk uit. Bestaande repositories kunnen worden omgezet, maar de migratie is complex vanwege de miljarden bestaande commit-ID's. Voorlopig zijn SHA-1 commit-ID's nog steeds de manier waarop de meeste Git-geschiedenis wordt opgeslagen, waardoor deze tool nuttig is voor het cross-checken van commit-object hashes.
Moet ik migreren van SHA-1 naar SHA-256?
Ja, voor elk beveiligingsgevoelig systeem. Concrete migratielijst: (1) TLS-certificaten — als je nog SHA-1-ondertekende certificaten hebt, vervang ze onmiddellijk; certificaatautoriteiten geven toch geen nieuwe meer uit. (2) API-handtekeningen en HMAC's — vervang door HMAC-SHA-256. (3) Wachtwoord-hashes opgeslagen als SHA-1 — migreer naar bcrypt of Argon2. (4) Document- of pakketchecksums — heruitgeven met SHA-256 naast of ter vervanging van SHA-1. (5) Git-repositories — gebruik de SHA-256-modus voor nieuwe repo's als je toolchain dit ondersteunt. Verouderde checksums op gearchiveerde downloads kunnen als ze zijn, omdat ze alleen accidentele corruptie hoeven te detecteren.
Wat was de SHAttered-aanval?
SHAttered (shattered.io, februari 2017) was een praktische SHA-1 collision die werd geproduceerd door Google Security en CWI Amsterdam. De aanval kostte ongeveer 110 GPU-jaren rekentijd (~$110.000 USD tegen 2017-cloudprijzen) en produceerde twee verschillende PDF-bestanden die dezelfde SHA-1 hash opleveren: 38762cf7f55934b34d179ae6a4c80cadccbb7f0a. Dit vernietigde de aanname dat SHA-1 collisions slechts theoretisch waren. De aanval maakt gebruik van een differentieel pad in SHA-1's compressiefunctie. Tegen 2020 waren de kosten van een chosen-prefix SHA-1 collision gedaald tot ~$45.000. Vergelijk met SHA-256, waarvoor nooit een collision van welke soort dan ook is gevonden.
Kunnen SHA-1 collisions per ongeluk plaatsvinden?
Per ongeluk een SHA-1 collision tegenkomen zonder opzettelijke inspanning is nog steeds astronomisch onwaarschijnlijk — er zijn 2^160 mogelijke SHA-1 waarden, dus de kans op willekeurige collision is ruwweg 1 op 10^24 voor twee willekeurige invoerwaarden. Het gevaar is kwaadwillend: een vastberaden aanvaller kan nu voor ongeveer $45.000 een collision construeren. Accidentele corruptie van Git-geschiedenis is geen realistisch risico van SHA-1 zwakheid. Het echte risico zit in digitaal ondertekende documenten, certificaten en code-signing workflows waarbij een aanvaller een kwaadaardig document zou kunnen vervangen met dezelfde hash als een vertrouwd document.
Is SHA-1 geschikt voor niet-beveiligde toepassingen zoals checksums?
Voor het detecteren van accidentele datacorruptie — een beschadigde download, een omgekeerde bit op schijf — is SHA-1 technisch gezien nog steeds adequaat, omdat accidentele collisions nog steeds vrijwel onmogelijk zijn. Er is echter weinig reden om SHA-1 te gebruiken, zelfs voor niet-beveiligde checksums, omdat SHA-256 slechts marginaal langzamer is (hardwareversneld in alle moderne CPU's), universeel ondersteund en toekomstbestendig. De enige legitieme reden om SHA-1 nu te gebruiken is interoperabiliteit met een verouderd systeem dat alleen 40-tekens hex vingerafdrukken accepteert.
Hoe lang is een SHA-1 hash?
Een SHA-1 hash is altijd precies 160 bits, weergegeven als 40 hexadecimale tekens (2 hex-tekens per byte × 20 bytes). De output-lengte is vast, ongeacht de invoergrootte — een enkel teken of een bestand van 10 GB produceert beide precies 40 hex-tekens. Vergelijk: MD5 produceert 32 hex-tekens (128 bits), SHA-256 produceert 64 hex-tekens (256 bits), en SHA-512 produceert 128 hex-tekens (512 bits). De kortere output ten opzichte van SHA-256 is een van de redenen dat de collision-weerstand van SHA-1 zwakker is — minder mogelijke waarden betekent dat collisions statistisch gezien gemakkelijker te vinden zijn.
Wordt mijn invoer naar een server verstuurd?
Nee. SHA-1 wordt volledig in je browser berekend via de Web Crypto API (crypto.subtle.digest('SHA-1', data)). Open DevTools → tabblad Netwerk terwijl je hasht — je ziet nul uitgaande verzoeken. Bestanden die je toevoegt worden gelezen via de FileReader API en lokaal verwerkt; de bytes verlaten je machine nooit. Dit maakt de tool veilig voor het hashen van vertrouwelijke documenten, verouderde certificaten of vingerafdrukken van bedrijfseigen broncode. Dezelfde privacygarantie geldt voor de SHA-256 generator.
Waarom verschilt mijn SHA-1 output van sha1sum op de commandoregel?
Bijna altijd een afsluitende nieuwe regel. Het shell-commando echo 'hello' | sha1sum bevat een nieuwe regel (\n) na 'hello', zodat 'hello\n' wordt gehasht in plaats van 'hello'. Gebruik echo -n 'hello' | sha1sum of printf '%s' 'hello' | sha1sum om die te verwijderen. Andere veelvoorkomende oorzaken: Windows-regeleinden (\r\n vs \n), UTF-8 BOM aan het begin van het bestand, of coderingsverschillen (UTF-8 vs Latin-1). Deze tool codeert invoer als UTF-8 zonder BOM vóór het hashen.

Gerelateerde tools

Alle tools bekijken →