Slik bruker du verktøyet
- Skriv inn tekst, bytt inndata til Hex for rå byte, eller klikk på Åpne fil.
- SHA-1 er forhåndsvalgt; endre valget under Algoritme hvis du vil sammenligne med en annen hashfunksjon.
- Under Utdata som velger du hex (små bokstaver), slik sha1sum og Git skriver den, HEX (store bokstaver) eller Base64.
- Lim inn en forventet SHA-1-verdi i feltet Sammenlign med; siden viser Samsvarer eller Samsvarer ikke.
Hva er SHA-1?
SHA-1 (Secure Hash Algorithm 1) ble utviklet av NSA og publisert av NIST i 1995 som FIPS 180-1, og erstattet den kortlivede SHA-0. I dag er den spesifisert i FIPS 180-4, og RFC 3174 beskriver den med eksempelkode i C. SHA-1 behandler blokker på 512 bit i 80 runder og gir en hashverdi på 160 bit: 40 hex-tegn eller 28 Base64-tegn.
Som alle hasher er SHA-1 enveis. En hashverdi kan ikke dekrypteres, bare sammenlignes med hashene av gjetninger. Det var slik SHA-1-passordhashene uten salt som lekket fra LinkedIn i 2012, ble knekt i stor skala; passord hører hjemme i Argon2, scrypt, bcrypt eller PBKDF2.
SHAttered: derfor frarådes SHA-1
I februar 2017 publiserte forskere fra CWI Amsterdam og Google SHAttered, den første reelle SHA-1-kollisjonen: to forskjellige PDF-filer med samme hash, funnet med omtrent 2^63 SHA-1-beregninger. I 2020 brukte Gaëtan Leurent og Thomas Peyrin («SHA-1 is a Shambles») en kollisjon med valgt prefiks til å demonstrere forfalskede SHA-1-signaturer på PGP-nøkler, til en kostnad som er innenfor rekkevidde for en angriper med god økonomi.
- Offentlige CA-er sluttet å utstede SHA-1-baserte TLS-sertifikater i 2016, og nettleserne sluttet å stole på dem tidlig i 2017.
- NIST har ikke tillatt SHA-1 for nye digitale signaturer siden 2013 og planlegger å fase den helt ut innen utgangen av 2030.
- De fleste Git-repositorier identifiserer fortsatt objekter med SHA-1, beregnet med en forsterket implementasjon som oppdager kollisjonsforsøk; Git kan også opprette repositorier som bruker SHA-256.
Kollisjoner knekker ikke HMAC, så HMAC-SHA1 finnes fortsatt i TOTP-koder og eldre webhook-signaturer; beregn den med HMAC-generatoren. For alt nytt bør du velge SHA-256.
Git-objekt-ID-er, Base64 og tegnkoding
En Git-blob-ID er ikke SHA-1 av filen alene. Git hasher en header som består av blob, et mellomrom, størrelsen i byte og en nullbyte, etterfulgt av innholdet. For å gjenskape den her bytter du inndata til hex og tar med disse header-bytene: For hello pluss et linjeskift er hex-inndataene 626c6f6220360068656c6c6f0a.
$ printf 'hello\n' | sha1sum
f572d396fae9206628714fb2ce00f72e94f2258f -
$ printf 'hello\n' | git hash-object --stdin
ce013625030ba8dba906f756967f9e9ca394464a
SHA-1 vises vanligvis som hex med små bokstaver. Base64 brukes i WebSocket-håndtrykket, der Sec-WebSocket-Accept er Base64-kodet SHA-1 av klientnøkkelen pluss en fast GUID, og i LDAP-passordverdier av typen {SHA}. Husk at hashen beregnes av byte: Tekst med bokstaver som é eller ø har én SHA-1 i UTF-8 og en annen 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 siden beregner SHA-1 med Web Crypto API-et som er innebygd i nettleseren din, så inndataene forlater aldri enheten din. Tabellen Alle algoritmer viser MD5-, SHA-256-, SHA-384-, SHA-512- og CRC-verdiene for de samme inndataene.
Eksempler
| Inndata (UTF-8) | SHA-1 |
|---|---|
Hello, World! | 0a0a9f2a6772942557ab5355d76af442f8f65e01 |
Base64.is | 6c667ee2efd2020349eed40efa07c26683f613c8 |
你好 | 440ee0853ad1e99f962b63e459ef992d7c211722 |
Ofte stilte spørsmål
Er SHA-1 fortsatt trygg å bruke?
Ikke der en angriper kan velge eller påvirke inndataene, for eksempel i signaturer og sertifikater, fordi det er mulig å lage SHA-1-kollisjoner. Den oppdager fortsatt utilsiktet skade, og HMAC-SHA1 påvirkes ikke av kollisjoner. Bruk SHA-256 eller SHA-512 i nye løsninger.
Kan en SHA-1-hash reverseres?
Nei. Det finnes ingen nøkkel og ingen dekryptering. Oppslagsnettsteder finner bare inndata som allerede står i tabellene deres over vanlige ord og lekkede passord. Derfor er lange, tilfeldige inndata trygge for dem, mens et kort passord ikke er det.
Hvor lang er en SHA-1-hash?
=. RIPEMD-160 har samme lengde, og passordhasher fra MySQL 4.1+ er en stjerne etterfulgt av 40 hex-tegn. Hashidentifikatoren viser kandidatene for en gitt streng.Hvordan kontrollerer jeg en fil mot en publisert SHA-1?
Åpne filen, og lim deretter inn den publiserte verdien i feltet Sammenlign med. Hex med store eller små bokstaver og Base64 godtas, og siden viser Samsvarer eller Samsvarer ikke.
Hva er forskjellen mellom SHA-1 og SHA-256?
Begge er publisert av NIST, men SHA-256 tilhører den nyere SHA-2-familien, gir 256-biters utdata og har ingen kjente praktiske angrep. SHA-1 har kortere utdata, og kollisjonsmotstanden er brutt.