SHA-1-hashgenerator

Få SHA-1-hashværdien på 160 bit af tekst, hexbytes eller en fil, mens du skriver. Kontrollér den mod en offentliggjort kontrolsum, og se SHA-256, SHA-512 og MD5 af det samme input med ét blik.

Alle algoritmer

Kører udelukkende i din browser. Intet bliver uploadet.

Sådan bruger du værktøjet

  1. Skriv tekst, skift inputtet til Hex for at angive bytes, eller klik på Åbn fil.
  2. SHA-1 er valgt på forhånd; skift under Algoritme, hvis du vil sammenligne med en anden hashfunktion.
  3. Vælg under Output som mellem hex (små bogstaver) som i sha1sum og Git, HEX (store bogstaver) og Base64.
  4. Indsæt en forventet SHA-1-værdi i feltet Sammenlign med; siden viser Stemmer overens eller Stemmer ikke overens.

Hvad er SHA-1?

SHA-1 (Secure Hash Algorithm 1) blev udviklet af NSA og offentliggjort af NIST i 1995 som FIPS 180-1, hvor den afløste den kortlivede SHA-0. I dag er den specificeret i FIPS 180-4, og RFC 3174 beskriver den med eksempelkode i C. SHA-1 behandler blokke på 512 bit i 80 runder og giver en hashværdi på 160 bit: 40 hextegn eller 28 Base64-tegn.

Som alle hashfunktioner virker SHA-1 kun den ene vej. En hashværdi kan ikke dekrypteres, kun matches ved at hashe gæt. Det var sådan, de usaltede SHA-1-hashværdier af adgangskoder, der blev lækket fra LinkedIn i 2012, blev knækket i stor stil; adgangskoder hører hjemme i Argon2, scrypt, bcrypt eller PBKDF2.

SHAttered: Derfor er SHA-1 udfaset

I februar 2017 offentliggjorde forskere fra CWI Amsterdam og Google SHAttered, den første reelle SHA-1-kollision: to forskellige PDF-filer med den samme hashværdi, fundet med omkring 2^63 SHA-1-beregninger. I 2020 brugte Gaëtan Leurent og Thomas Peyrin ("SHA-1 is a Shambles") en kollision med valgt præfiks til at demonstrere forfalskede SHA-1-signaturer på PGP-nøgler, til en pris inden for rækkevidde af en angriber med gode ressourcer.

  • Offentlige certifikatudstedere (CA'er) holdt op med at udstede TLS-certifikater med SHA-1 i 2016, og browserne holdt op med at stole på dem i begyndelsen af 2017.
  • NIST har ikke tilladt SHA-1 til nye digitale signaturer siden 2013 og planlægger at udfase den helt inden udgangen af 2030.
  • De fleste Git-repositorier identificerer stadig objekter med SHA-1, beregnet med en hærdet implementering, der opdager kollisionsforsøg; Git kan også oprette repositorier, der bruger SHA-256.

Kollisioner bryder ikke HMAC, så HMAC-SHA1 findes stadig i TOTP-koder og ældre webhook-signaturer; du kan beregne den med HMAC-generatoren. Til alt nyt bør du vælge SHA-256.

Git-objekt-id'er, Base64 og tegnkodning

Et Git-blob-id er ikke SHA-1-hashværdien af filen alene. Git hasher en header bestående af blob, et mellemrum, størrelsen i bytes og en nulbyte efterfulgt af indholdet. For at genskabe den her skal du skifte inputtet til Hex og medtage disse headerbytes: For hello plus et linjeskift er hexinputtet 626c6f6220360068656c6c6f0a.

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

SHA-1 vises som regel som hex med små bogstaver. Base64 forekommer i WebSocket-handshaket, hvor Sec-WebSocket-Accept er Base64 af SHA-1-hashværdien af klientnøglen plus et fast GUID, og i LDAP-adgangskodeværdier af typen {SHA}. Husk, at hashværdien beregnes ud fra bytes: Tekst med bogstaver som é eller ø har én SHA-1-værdi i UTF-8 og en anden i Windows-1252.

SHA-1 på kommandolinjen og i kode

sha1sum file.zip                          # Linux
shasum file.zip                           # macOS (SHA-1 er standard)
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')

Denne side beregner SHA-1 med det Web Crypto API, der er indbygget i din browser, så inputtet aldrig forlader din enhed. Tabellen Alle algoritmer viser MD5-, SHA-256-, SHA-384-, SHA-512- og CRC-værdierne af det samme input.

Eksempler

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

Ofte stillede spørgsmål

Er SHA-1 stadig sikker at bruge?

Ikke hvor en angriber kan vælge eller påvirke inputtet, for eksempel i signaturer og certifikater, fordi der kan fremstilles SHA-1-kollisioner. Den opdager stadig utilsigtet beskadigelse, og HMAC-SHA1 påvirkes ikke af kollisioner. Brug SHA-256 eller SHA-512 til nye projekter.

Kan en SHA-1-hashværdi vendes om?

Nej. Der er ingen nøgle og ingen dekryptering. Opslagstjenester finder kun input, der allerede står i deres tabeller over almindelige ord og lækkede adgangskoder. Derfor er et langt, tilfældigt input sikkert over for dem, mens en kort adgangskode ikke er.

Hvor lang er en SHA-1-hashværdi?
160 bit, eller 20 bytes: 40 hextegn eller 28 Base64-tegn, der ender på ét =. RIPEMD-160 har samme længde, og hashværdier for adgangskoder i MySQL 4.1+ består af en stjerne efterfulgt af 40 hextegn. Værktøjet Hashidentifikator viser de mulige kandidater for en given streng.
Hvordan kontrollerer jeg en fil mod en offentliggjort SHA-1-værdi?

Klik på Åbn fil, og indsæt derefter den offentliggjorte værdi i feltet Sammenlign med. Hex med store eller små bogstaver og Base64 accepteres alle, og siden viser Stemmer overens eller Stemmer ikke overens.

Hvad er forskellen på SHA-1 og SHA-256?

Begge er offentliggjort af NIST, men SHA-256 hører til den nyere SHA-2-familie, har et output på 256 bit og ingen kendte praktiske angreb. SHA-1 har et kortere output, og dens kollisionsresistens er brudt.