SHA-1-hashgenerator

Bereken de 160-bits SHA-1-hashwaarde van tekst, hex-bytes of een bestand terwijl je typt. Vergelijk die met een gepubliceerde controlesom en zie in één oogopslag de SHA-256, SHA-512 en MD5 van dezelfde invoer.

Alle algoritmen

Werkt volledig in je browser. Er wordt niets geüpload.

Zo gebruik je het

  1. Voer tekst in, zet Invoer als op Hex voor hex-bytes, of klik op Bestand openen.
  2. SHA-1 is al geselecteerd; kies bij Algoritme een andere hashfunctie als je de uitkomst daarmee wilt vergelijken.
  3. Kies hex (kleine letters), zoals sha1sum en Git die tonen, HEX (hoofdletters) of Base64.
  4. Plak een verwachte SHA-1 in het veld Vergelijken met; de pagina toont Komt overeen of Komt niet overeen.

Wat is SHA-1?

SHA-1 (Secure Hash Algorithm 1) is ontworpen door de NSA en in 1995 door NIST gepubliceerd als FIPS 180-1, ter vervanging van het kortstondige SHA-0. Tegenwoordig is het vastgelegd in FIPS 180-4, en RFC 3174 beschrijft het met voorbeeldcode in C. SHA-1 verwerkt blokken van 512 bits in 80 rondes en levert een hashwaarde van 160 bits op: 40 hextekens of 28 Base64-tekens.

Zoals elke hash werkt SHA-1 maar in één richting. Een hashwaarde kan niet worden ontsleuteld; je kunt alleen geraden invoer hashen en kijken of de uitkomst overeenkomt. Zo zijn de SHA-1-wachtwoordhashes zonder salt die in 2012 bij LinkedIn uitlekten massaal gekraakt. Wachtwoorden horen thuis in Argon2, scrypt, bcrypt of PBKDF2.

SHAttered: waarom SHA-1 wordt afgeraden

In februari 2017 publiceerden onderzoekers van het CWI in Amsterdam en Google SHAttered, de eerste echte SHA-1-botsing: twee verschillende PDF-bestanden met dezelfde hash, gevonden met ongeveer 2^63 SHA-1-berekeningen. In 2020 gebruikten Gaëtan Leurent en Thomas Peyrin ("SHA-1 is a Shambles") een chosen-prefix-botsing om vervalste SHA-1-handtekeningen op PGP-sleutels te demonstreren, tegen kosten die binnen bereik liggen van een aanvaller met voldoende middelen.

  • Publieke CA's stopten in 2016 met het uitgeven van SHA-1-certificaten voor TLS, en browsers vertrouwen ze sinds begin 2017 niet meer.
  • NIST staat SHA-1 sinds 2013 niet meer toe voor nieuwe digitale handtekeningen en wil het uiterlijk eind 2030 volledig uitfaseren.
  • De meeste Git-repository's identificeren objecten nog steeds met SHA-1, berekend met een geharde implementatie die botsingspogingen herkent; Git kan ook repository's aanmaken die SHA-256 gebruiken.

Botsingen breken HMAC niet, dus HMAC-SHA1 kom je nog tegen in TOTP-codes en oudere webhookhandtekeningen; bereken het met de HMAC-generator. Kies voor alles wat nieuw is SHA-256.

Git-object-ID's, Base64 en tekencodering

Een Git-blob-ID is niet de SHA-1 van alleen het bestand. Git hasht een header die bestaat uit blob, een spatie, de grootte in bytes en een nulbyte, gevolgd door de inhoud. Wil je dat hier nabootsen, zet Invoer als dan op Hex en neem die headerbytes mee: voor hello plus een regeleinde is de hex-invoer 626c6f6220360068656c6c6f0a.

$ printf 'hello\n' | sha1sum
f572d396fae9206628714fb2ce00f72e94f2258f  -
$ printf 'hello\n' | git hash-object --stdin
ce013625030ba8dba906f756967f9e9ca394464a

SHA-1 wordt meestal als hex in kleine letters getoond. Base64 kom je tegen in de WebSocket-handshake, waar Sec-WebSocket-Accept de SHA-1 in Base64 is van de clientsleutel plus een vaste GUID, en in LDAP-wachtwoordwaarden met {SHA}. Onthoud dat de hash over bytes gaat: tekst met accenten heeft in UTF-8 een andere SHA-1 dan in Windows-1252.

SHA-1 op de opdrachtregel en in code

sha1sum file.zip                          # Linux
shasum file.zip                           # macOS (SHA-1 is de standaard)
certutil -hashfile file.zip SHA1          # Windows
Get-FileHash file.zip -Algorithm SHA1     # PowerShell

# Python
hashlib.sha1(data).hexdigest()

// Node.js
crypto.createHash('sha1').update(data).digest('hex')

Deze pagina berekent SHA-1 met de Web Crypto API die in je browser is ingebouwd, dus de invoer verlaat je apparaat nooit. De tabel Alle algoritmen toont de MD5-, SHA-256-, SHA-384-, SHA-512- en CRC-waarden van dezelfde invoer.

Voorbeelden

Invoer (UTF-8)SHA-1
Hello, World!0a0a9f2a6772942557ab5355d76af442f8f65e01
Base64.is6c667ee2efd2020349eed40efa07c26683f613c8
你好440ee0853ad1e99f962b63e459ef992d7c211722

Veelgestelde vragen

Is SHA-1 nog veilig om te gebruiken?

Niet waar een aanvaller de invoer kan kiezen of beïnvloeden, zoals bij handtekeningen en certificaten, want SHA-1-botsingen kunnen worden gemaakt. Het spoort nog steeds onbedoelde beschadiging op, en HMAC-SHA1 heeft geen last van botsingen. Gebruik voor nieuw werk SHA-256 of SHA-512.

Kan een SHA-1-hash worden teruggedraaid?

Nee. Er is geen sleutel en geen ontsleuteling. Opzoeksites vinden alleen invoer die al in hun tabellen met veelgebruikte woorden en uitgelekte wachtwoorden staat. Daarom is een lange willekeurige invoer veilig voor zulke sites en een kort wachtwoord niet.

Hoe lang is een SHA-1-hash?
160 bits, oftewel 20 bytes: 40 hextekens of 28 Base64-tekens, eindigend op één =. RIPEMD-160 heeft dezelfde lengte, en wachtwoordhashes van MySQL 4.1+ bestaan uit een sterretje gevolgd door 40 hextekens. De Hash-identifier toont de kandidaten voor een bepaalde string.
Hoe controleer ik een bestand met een gepubliceerde SHA-1?

Open het bestand en plak de gepubliceerde waarde in het veld Vergelijken met. Hex in hoofdletters of kleine letters en Base64 worden allemaal geaccepteerd, en de pagina toont Komt overeen of Komt niet overeen.

Wat is het verschil tussen SHA-1 en SHA-256?

Beide zijn door NIST gepubliceerd, maar SHA-256 hoort bij de nieuwere SHA-2-familie, heeft een uitvoer van 256 bits en er zijn geen praktische aanvallen op bekend. SHA-1 heeft een kortere uitvoer en de botsingsbestendigheid ervan is gebroken.