Sådan bruger du værktøjet
- Skriv tekst, skift inputtet til Hex for at angive bytes, eller klik på Åbn fil.
- SHA-1 er valgt på forhånd; skift under Algoritme, hvis du vil sammenligne med en anden hashfunktion.
- Vælg under Output som mellem hex (små bogstaver) som i sha1sum og Git, HEX (store bogstaver) og Base64.
- 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.is | 6c667ee2efd2020349eed40efa07c26683f613c8 |
你好 | 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?
=. 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.