SHA-1 Hash Generator

SHA-1-hash genereren uit elke tekst

Invoertekst

Draait lokaal · Veilig om secrets te plakken

SHA-1-hash

SHA-1-hash verschijnt hier…

Wat is SHA-1-hashing?

SHA-1 (Secure Hash Algorithm 1) is een cryptografische hashfunctie die uit elke invoer een vaste samenvatting van 160 bits (20 bytes) produceert. Gepubliceerd door de NSA en in 1995 gestandaardiseerd door NIST als FIPS PUB 180-1 en later gedocumenteerd in RFC 3174, werd SHA-1 ontworpen als een sterkere opvolger van SHA-0 en MD5. Het algoritme verwerkt invoer in blokken van 512 bits via 80 rondes van bitsgewijze bewerkingen, en produceert een hexadecimale vingerafdruk van 40 tekens die meer dan een decennium lang de basis vormde voor SSL/TLS, PGP, SSH en IPsec.

Net als alle cryptografische hashfuncties is SHA-1 een eenrichtingstransformatie: het berekenen van de hash uit een invoer gaat snel, maar het terughalen van de invoer uit alleen de hash is rekenkundig onuitvoerbaar. Een verandering van één bit in de invoer levert een volledig andere samenvatting van 160 bits op — een eigenschap die het lawine-effect wordt genoemd. SHA-1 beeldt een willekeurig grote invoerruimte af op een vaste uitvoer van 160 bits, wat betekent dat botsingen (twee verschillende invoerwaarden die dezelfde hash opleveren) wiskundig onvermijdelijk zijn. De beveiligingsclaim van een hashfunctie is dat het vinden van zulke botsingen ongeveer 2^80 bewerkingen moet vereisen — de helft van de uitvoerlengte in bits.

In 2017 publiceerden Google en CWI Amsterdam de SHAttered-aanval, waarbij de eerste praktische SHA-1-botsing werd aangetoond door twee verschillende PDF-bestanden met dezelfde samenvatting te produceren. De aanval vergde ongeveer 2^63,1 SHA-1-berekeningen — ruim onder de theoretische grens van 2^80. In 2020 verlaagden Gaetan Leurent en Thomas Peyrin de kosten verder met een chosen-prefix collision-aanval van circa 2^63,4 bewerkingen. Als gevolg hiervan hebben alle grote browsers, certificaatautoriteiten en normalisatie-instanties SHA-1 afgeschaft voor digitale handtekeningen en TLS-certificaten. SHA-1 wordt echter nog steeds actief gebruikt voor niet-beveiligingsdoeleinden: Git-object-ID's (hoewel Git migreert naar SHA-256), verouderde HMAC-constructies en bestandsintegriteitscontrolesommen waarbij botsingsbestendigheid tegen aanvallers niet vereist is.

Waarom deze SHA-1 Generator gebruiken?

Genereer SHA-1-hashes onmiddellijk, zonder iets te installeren of code te schrijven. Plak uw tekst en ontvang de hexadecimale samenvatting van 40 tekens in realtime — handig voor het verifiëren van verouderde controlesommen, het debuggen van Git-internals of het testen van op hash gebaseerde workflows.

Directe hashing
De uitvoer wordt bijgewerkt terwijl u typt. Geen knopklikken, geen wachten — de SHA-1-samenvatting verschijnt teken voor teken terwijl u de invoer aanpast.
🔒
Privacy voorop
Alle hashing wordt lokaal in uw browser uitgevoerd via de Web Crypto API. Uw invoertekst verlaat uw apparaat nooit en wordt nooit naar een server verstuurd.
📋
Kopiëren met één klik
Kopieer de hash naar het klembord met één klik. Schakel tussen kleine letters en hoofdletters in de hexadecimale uitvoer om aan te sluiten op het formaat dat uw systeem verwacht.
🔍
Geen account vereist
Geen registratie, geen aanmelding, geen gebruikslimieten. Open de pagina en begin direct met hashen. Werkt op elk apparaat met een moderne browser.

Toepassingen van SHA-1

Git-internals en debuggen
Git identificeert elk object (commit, tree, blob, tag) via zijn SHA-1-hash. Bij het debuggen van Git plumbing-commando's, het verifiëren van packbestanden of het schrijven van aangepaste Git-tooling helpt een snelle SHA-1-generator u object-ID's te vergelijken met verwachte waarden.
Verificatie van verouderde systemen
Veel oudere systemen, pakketregisters en firmware-updatemechanismen publiceren nog steeds SHA-1-controlesommen naast downloads. Genereer en vergelijk SHA-1-hashes om bestandsintegriteit te verifiëren wanneer SHA-256-samenvattingen niet beschikbaar zijn.
Subresource Integrity (SRI)
Hoewel sha256 en sha384 de voorkeur hebben voor SRI-hashes in HTML script- en link-tags, zijn sommige verouderde CDN-configuraties nog afhankelijk van SHA-1. Genereer de verwachte samenvatting om bestaande SRI-attributen te controleren of te migreren.
QA en regressietesten
Vergelijk SHA-1-hashes van API-reacties, build-artefacten of database-snapshots tussen testruns om onverwachte wijzigingen op te sporen, zonder een volledige byte-voor-byte vergelijking van grote uitvoerbestanden uit te voeren.
Gegevensdeduplicatie
Bereken SHA-1-hashes van bestandsinhoud of gegevensrecords in ETL-pipelines om duplicaten te identificeren. De uitvoer van 160 bits biedt een sterkere uniekheidsgarantie dan MD5 voor deduplicatie-scenario's zonder kwaadwillende partijen.
Leren en onderwijs
SHA-1 is een goed gedocumenteerd algoritme met uitgebreide academische literatuur. Experimenteer ermee om de Merkle-Damgard-constructie, berichtplanning en het verval van botsingsbestendigheid te begrijpen wanneer de uitvoerlengte te kort is ten opzichte van modern rekenvermogen.

SHA-1 versus andere hashalgoritmen

SHA-1 produceert een samenvatting van 160 bits — langer dan MD5 (128 bits) maar aanzienlijk korter dan de SHA-2-familie. De onderstaande tabel vergelijkt samenvattingsgroottes, standaarden en geschikte toepassingen voor elk algoritme.

AlgoritmeSamenvattingsgrootteHexadecimale lengteStandaardGeschikt voor
SHA-1160 bits40 hex chars1995 / RFC 3174Deprecated — legacy git commits, old TLS
SHA-256256 bits64 hex chars2001 / FIPS 180-4TLS certificates, blockchain, JWTs
SHA-384384 bits96 hex chars2001 / FIPS 180-4Government systems, higher security margin
SHA-512512 bits128 hex chars2001 / FIPS 180-4Digital signatures, HMAC with large keys
MD5128 bits32 hex chars1992 / RFC 1321Checksums only — broken since 2004
SHA-3256 bits64 hex chars2015 / FIPS 202Post-quantum readiness, alternative to SHA-2
BLAKE3256 bits64 hex chars2020High-performance checksums, Merkle trees

Hoe werkt SHA-1?

SHA-1 volgt de Merkle-Damgard-constructie: het bericht wordt opgevuld, opgesplitst in blokken van 512 bits en elk blok wordt verwerkt via 80 rondes bitsgewijze bewerkingen die de invoer vermengen met een berichtplanning afgeleid van het blok. Vijf toestandswoorden van 32 bits (H0 tot en met H4) bevatten de lopende hashstatus, en de uiteindelijke aaneenschakeling van deze woorden levert de samenvatting van 160 bits op.

Input: "hello world"
SHA-1: 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
(160 bits = 20 bytes = 40 hex characters)
StapBeschrijving
PaddingAppend a 1-bit, then zeros, until message length is 448 mod 512. Append the original length as a 64-bit big-endian integer.
Block splittingDivide the padded message into 512-bit (64-byte) blocks.
ExpansionExpand each 16-word block into 80 words using a left-rotate-by-1 XOR feedback schedule.
CompressionProcess 80 rounds per block using four nonlinear functions (Ch, Parity, Maj, Parity) across rounds 0-19, 20-39, 40-59, and 60-79.
OutputConcatenate the five 32-bit state words (H0-H4) into a 160-bit (20-byte) digest, rendered as 40 hexadecimal characters.

Het belangrijkste verschil tussen SHA-1 en MD5 is het aantal toestandswoorden (5 versus 4), het aantal rondes per blok (80 versus 64) en het gebruik van een berichtplanning met terugkoppeling via links-roteren. Deze verschillen geven SHA-1 een grotere uitvoer (160 versus 128 bits) en boden oorspronkelijk een hogere beveiligingsmarge, hoewel beide algoritmen nu als gebroken worden beschouwd voor botsingsbestendigheid.

Codevoorbeelden

Hoe u SHA-1-hashes genereert in populaire talen en omgevingen. Anders dan MD5 is SHA-1 beschikbaar in de Web Crypto API van de browser, waardoor het zonder externe bibliotheken bruikbaar is in zowel browser- als Node.js-omgevingen.

JavaScript (Web Crypto API — browser & Node.js)
// SHA-1 is available in the Web Crypto API
async function sha1(text) {
  const data = new TextEncoder().encode(text)
  const hashBuffer = await crypto.subtle.digest('SHA-1', data)
  const hashArray = Array.from(new Uint8Array(hashBuffer))
  return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}

await sha1('hello world')
// → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"

// Node.js (built-in crypto module)
const crypto = require('crypto')
crypto.createHash('sha1').update('hello world').digest('hex')
// → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"
Python
import hashlib

# Basic SHA-1 hash
result = hashlib.sha1(b'hello world').hexdigest()
print(result)  # → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"

# Hash a string (encode to bytes first)
text = 'hello world'
hashlib.sha1(text.encode('utf-8')).hexdigest()
# → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"

# Hash a file in chunks
with open('file.bin', 'rb') as f:
    sha1 = hashlib.sha1()
    for chunk in iter(lambda: f.read(8192), b''):
        sha1.update(chunk)
    print(sha1.hexdigest())
Go
package main

import (
    "crypto/sha1"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := sha1.Sum(data)
    fmt.Printf("%x\n", hash)
    // → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
}
CLI (Linux / macOS)
# Using sha1sum (Linux) or shasum (macOS)
echo -n "hello world" | sha1sum
# → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed  -

# macOS
echo -n "hello world" | shasum -a 1
# → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed  -

# Hash a file
sha1sum package.json
# → a1b2c3d4e5f6...  package.json

# Using openssl (cross-platform)
echo -n "hello world" | openssl sha1
# → SHA1(stdin)= 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed

Veelgestelde vragen

Is SHA-1 nog veilig in gebruik?
SHA-1 is niet veilig voor beveiligingsgevoelige toepassingen. De SHAttered-aanval uit 2017 toonde praktische botsingsgeneratie aan, en de chosen-prefix-aanval uit 2020 verlaagde de kosten verder. Gebruik voor digitale handtekeningen, TLS-certificaten of situaties waarbij een aanvaller botsende invoerwaarden kan construeren SHA-256 of SHA-3. Voor niet-beveiligingsdoeleinden zoals controlesommen en cachesleutels waarbij geen aanvaller de invoer bepaalt, blijft SHA-1 functioneel.
Wat is het verschil tussen SHA-1 en SHA-256?
SHA-1 produceert een samenvatting van 160 bits (40 hexadecimale tekens) en is kwetsbaar voor botsingsaanvallen. SHA-256 produceert een samenvatting van 256 bits (64 hexadecimale tekens) en behoort tot de SHA-2-familie, waarvoor geen bekende praktische aanvallen bestaan. SHA-256 is ongeveer 20–30% langzamer dan SHA-1 op dezelfde hardware, maar de extra 96 bits uitvoer en de afwezigheid van bekende structurele zwaktes maken het de standaardaanbeveling voor elk nieuw project.
Waarom gebruikt Git SHA-1?
Toen Linus Torvalds Git ontwerp in 2005, werd SHA-1 als veilig beschouwd en bood het een goede balans tussen snelheid en botsingsbestendigheid voor content-adresseerbare opslag. Git gebruikt SHA-1 als inhoudsidentificator, niet als beveiligingsmechanisme — het detecteert onbedoelde beschadiging, niet kwaadwillige manipulatie. Sinds 2021 migreert Git naar SHA-256 via het hash-extensieraamwerk beschreven in het git-hash-function-transition-plan.
Kunt u een SHA-1-hash terugdraaien naar de originele invoer?
Nee. SHA-1 is een eenrichtingsfunctie die informatie weggooit tijdens het hashen. Voor korte of veelvoorkomende invoerwaarden kunnen aanvallers rainbow tables of brute-force-zoekopdrachten gebruiken om de oorspronkelijke klartekst te vinden, maar dit is geen omkering van het algoritme — het is een uitputtende zoekopdracht in de invoerruimte. Gebruik voor wachtwoorden bcrypt, scrypt of Argon2 in plaats van een snelle hashfunctie.
Hoe werkt de SHAttered-aanval?
De SHAttered-aanval maakt gebruik van structurele zwaktes in de SHA-1-compressiefunctie. Door twee verschillende berichtblokken van 512 bits zorgvuldig te construeren die dezelfde tussenliggende hashstatus opleveren, creëerden de aanvallers twee PDF-bestanden met identieke SHA-1-samenvattingen maar verschillende zichtbare inhoud. De aanval vergde ongeveer 2^63 SHA-1-berekeningen — ongeveer 6.500 jaar single-CPU-tijd, maar uitvoerbaar op een GPU-cluster in enkele maanden. De kosten zijn sindsdien verder gedaald door verbeterde technieken.
Wat is het verschil tussen SHA-1 en HMAC-SHA1?
SHA-1 is een eenvoudige hashfunctie: hash = SHA1(bericht). HMAC-SHA1 is een gesleutelde berichtauthenticatiecode: mac = HMAC(sleutel, bericht). HMAC omhult de hashfunctie in een constructie die length-extension-aanvallen voorkomt en een geheime sleutel vereist. HMAC-SHA1 wordt interessant genoeg nog steeds als veilig beschouwd voor berichtauthenticatie, ook al is SHA-1 zelf gebroken voor botsingsbestendigheid — omdat HMAC-beveiliging afhangt van de pseudowillekeurige functieeigenschappen van de compressiefunctie, niet van botsingsbestendigheid.
Moet ik SHA-1 of MD5 gebruiken voor bestandscontrolesommen?
SHA-1 is een betere keuze dan MD5 voor bestandscontrolesommen. MD5 produceert een samenvatting van 128 bits en is gebroken sinds 2004, met praktische botsingsaanvallen die nu in seconden uitvoerbaar zijn. SHA-1 produceert een samenvatting van 160 bits en zijn botsingsaanvallen, hoewel aangetoond, blijven duurder. Voor elk nieuw systeem verdient SHA-256 echter de voorkeur — het biedt een samenvatting van 256 bits zonder bekende praktische aanvallen en wordt breed ondersteund op alle platformen en in alle talen.