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.
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
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
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
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(), Pythonhmac.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?
Waarom gebruikt Git nog steeds SHA-1?
--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?
Wat was de SHAttered-aanval?
Kunnen SHA-1 collisions per ongeluk plaatsvinden?
Is SHA-1 geschikt voor niet-beveiligde toepassingen zoals checksums?
Hoe lang is een SHA-1 hash?
Wordt mijn invoer naar een server verstuurd?
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?
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 →JWT decoderen — online JWT-decoder
Beveiligingstools
Decodeer JWT-tokens direct in je browser. Inspecteer header, payload, signature, vervaldatum en claims. 100% privé — je token verlaat je apparaat nooit.
Online MD5 Hash Generator & Checksum Tool
Beveiligingstools
Genereer MD5-, SHA-256-, SHA-1- en SHA-512-hashes gratis in je browser. Hash tekst of bestanden, verifieer checksums en kopieer resultaten. Geen account nodig.
Willekeurig wachtwoord genereren — online generator
Beveiligingstools
Genereer direct sterke willekeurige wachtwoorden — gratis, 100% in je browser. Stel lengte en tekens in, batch tot 50 met entropie-analyse.
SHA-256 Hash-generator & Checksumtool
Beveiligingstools
Genereer SHA-256 hashes online gratis. Hash tekst of bestanden in je browser, verifieer checksums en kopieer 64-tekens hex output. Geen account nodig; je data verlaat de pagina niet.
SHA-3 Hash-generator (Keccak SHA3-256)
Beveiligingstools
Genereer SHA-3 hashes online gratis. NIST FIPS 202 sponge-constructie — de post-SHA-2 standaard. SHA3-256 output in 64 hex-tekens. Alleen browser via lazy-loaded js-sha3; geen uploads.
SHA-384 Hash Generator (TLS Suite B hash)
Beveiligingstools
Genereer SHA-384 hashes online — 96-tekens hex output, immuun voor length-extension, NSA Suite B-compliant. Gecombineerd met AES-256-GCM in TLS. Alle hash-berekeningen in je browser via Web Crypto API.