Så använder du verktyget
- Skriv in text, välj Hex under Indata som för att ange hexbyte, eller klicka på Öppna fil.
- SHA-1 är förvald; byt i listan Algoritm om du vill jämföra med en annan hashfunktion.
- Under Utdata som väljer du hex (gemener), som är vad sha1sum och Git skriver ut, HEX (versaler) eller Base64.
- Klistra in ett förväntat SHA-1-värde i fältet Jämför med; sidan visar Stämmer eller Stämmer inte.
Vad är SHA-1?
SHA-1 (Secure Hash Algorithm 1) konstruerades av NSA och publicerades av NIST 1995 som FIPS 180-1, som ersättare för den kortlivade SHA-0. I dag specificeras den i FIPS 180-4, och RFC 3174 beskriver den med exempelkod i C. SHA-1 bearbetar block om 512 bitar i 80 rundor och ger ett hashvärde på 160 bitar: 40 hextecken eller 28 Base64-tecken.
Som alla hashfunktioner är SHA-1 envägs. Ett hashvärde kan inte dekrypteras, bara matchas genom att man hashar gissningar. Det var så de osaltade SHA-1-lösenordshasharna som läckte från LinkedIn 2012 knäcktes i stor skala; lösenord hör hemma i Argon2, scrypt, bcrypt eller PBKDF2.
SHAttered: därför är SHA-1 utfasad
I februari 2017 publicerade forskare från CWI Amsterdam och Google SHAttered, den första verkliga SHA-1-kollisionen: två olika PDF-filer med samma hashvärde, framtagna med ungefär 2^63 SHA-1-beräkningar. År 2020 använde Gaëtan Leurent och Thomas Peyrin ("SHA-1 is a Shambles") en kollision med valt prefix för att visa förfalskade SHA-1-signaturer på PGP-nycklar, till en kostnad inom räckhåll för en angripare med gott om resurser.
- Publika certifikatutfärdare slutade utfärda TLS-certifikat med SHA-1 2016, och webbläsarna slutade lita på dem i början av 2017.
- NIST har inte tillåtit SHA-1 för nya digitala signaturer sedan 2013 och planerar att fasa ut algoritmen helt till slutet av 2030.
- De flesta Git-repon identifierar fortfarande objekt med SHA-1, beräknad med en härdad implementation som upptäcker kollisionsförsök; Git kan också skapa repon som använder SHA-256.
Kollisioner knäcker inte HMAC, så HMAC-SHA1 förekommer fortfarande i TOTP-koder och äldre webhook-signaturer; beräkna sådana värden med HMAC-generatorn. För allt nytt väljer du SHA-256.
Git-objekt-ID:n, Base64 och teckenkodning
Ett blob-ID i Git är inte SHA-1 för enbart filen. Git hashar ett huvud som består av blob, ett mellanslag, storleken i byte och en nollbyte, följt av innehållet. För att återskapa det här väljer du Hex under Indata som och tar med huvudets byte: för hello plus en radbrytning är hexindatan 626c6f6220360068656c6c6f0a.
$ printf 'hello\n' | sha1sum
f572d396fae9206628714fb2ce00f72e94f2258f -
$ printf 'hello\n' | git hash-object --stdin
ce013625030ba8dba906f756967f9e9ca394464a
SHA-1 visas oftast som hex med gemener. Base64 förekommer i WebSocket-handskakningen, där Sec-WebSocket-Accept är Base64-formen av SHA-1 för klientnyckeln plus ett fast GUID, och i LDAP-lösenordsvärden av typen {SHA}. Kom ihåg att hashvärdet beräknas över byte: text med bokstäver som å, ä och é har en SHA-1 i UTF-8 och en annan i Windows-1252.
SHA-1 på kommandoraden och i kod
sha1sum file.zip # Linux
shasum file.zip # macOS (SHA-1 är 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')
Den här sidan beräknar SHA-1 med webbläsarens inbyggda Web Crypto API, så indatan lämnar aldrig din enhet. Tabellen Alla algoritmer visar MD5, SHA-256, SHA-384, SHA-512 och CRC-värden för samma indata.
Exempel
| Indata (UTF-8) | SHA-1 |
|---|---|
Hello, World! | 0a0a9f2a6772942557ab5355d76af442f8f65e01 |
Base64.is | 6c667ee2efd2020349eed40efa07c26683f613c8 |
你好 | 440ee0853ad1e99f962b63e459ef992d7c211722 |
Vanliga frågor
Är SHA-1 fortfarande säkert att använda?
Inte där en angripare kan välja eller påverka indatan, som i signaturer och certifikat, eftersom det går att ta fram SHA-1-kollisioner. SHA-1 upptäcker fortfarande oavsiktlig skada, och HMAC-SHA1 påverkas inte av kollisioner. För nya projekt använder du SHA-256 eller SHA-512.
Kan ett SHA-1-hashvärde vändas tillbaka?
Nej. Det finns ingen nyckel och ingen dekryptering. Uppslagstjänster hittar bara indata som redan finns i deras tabeller över vanliga ord och läckta lösenord, och därför är lång slumpmässig indata säker mot dem medan ett kort lösenord inte är det.
Hur långt är ett SHA-1-hashvärde?
=. RIPEMD-160 har samma längd, och lösenordshashar i MySQL 4.1+ består av en asterisk följd av 40 hextecken. Verktyget Identifiera hashtyp listar de möjliga algoritmerna för en viss sträng.Hur kontrollerar jag en fil mot ett publicerat SHA-1-värde?
Klicka på Öppna fil och klistra sedan in det publicerade värdet i fältet Jämför med. Hex med versaler eller gemener och Base64 accepteras, och sidan visar Stämmer eller Stämmer inte.
Vad är skillnaden mellan SHA-1 och SHA-256?
Båda har publicerats av NIST, men SHA-256 tillhör den nyare SHA-2-familjen, ger 256 bitars utdata och har inga kända praktiska attacker. SHA-1 har kortare utdata, och dess kollisionsresistens är knäckt.