SHA-1 Hash Generator

Vygenerujte SHA-1 hash z libovolného textu

Vstupní text

Běží lokálně · Bezpečné pro vkládání tajných údajů

SHA-1 hash

SHA-1 hash se zobrazí zde…

Co je SHA-1 hashování?

SHA-1 (Secure Hash Algorithm 1) je kryptografická hašovací funkce, která z libovolného vstupu vytvoří pevný 160bitový (20bajtový) výtah. Publikována agenturou NSA a standardizována organizací NIST v roce 1995 jako FIPS PUB 180-1, později zdokumentována v RFC 3174, byla SHA-1 navržena jako silnější nástupce SHA-0 a MD5. Algoritmus zpracovává vstup v 512bitových blocích přes 80 kol bitových operací a produkuje 40znakový hexadecimální otisk, který byl po více než deset let páteří SSL/TLS, PGP, SSH a IPsec.

Jako všechny kryptografické hašovací funkce je SHA-1 jednosměrnou transformací: výpočet hashe ze vstupu je rychlý, ale zpětné získání vstupu ze samotného hashe je výpočetně neproveditelné. Jednobitkové změna vstupu způsobí zcela odlišný 160bitový výtah — vlastnost zvaná lavinový efekt. SHA-1 mapuje libovolně velký vstupní prostor na pevný 160bitový výstup, což matematicky znamená, že kolize (dva různé vstupy se stejným hashem) existovat musí. Bezpečnostní předpoklad hašovací funkce říká, že nalezení takových kolizí by mělo vyžadovat přibližně 2^80 operací — polovinu délky výstupních bitů.

V roce 2017 Google a CWI Amsterdam publikovaly útok SHAttered, který demonstroval první praktickou kolizi SHA-1 vytvořením dvou různých souborů PDF se stejným výtahem. Útok vyžadoval přibližně 2^63.1 výpočtů SHA-1 — výrazně pod teoretickou hranicí 2^80. V roce 2020 Gaetan Leurent a Thomas Peyrin náklady dále snížili útokem kolize s volenou předponou vyžadujícím přibližně 2^63.4 operací. Výsledkem je, že všechny hlavní prohlížeče, certifikační autority a normalizační orgány zavrhly SHA-1 pro digitální podpisy a certifikáty TLS. SHA-1 však zůstává aktivně využívána pro nezbezpečnostní účely: identifikátory objektů Git (přestože Git přechází na SHA-256), starší konstrukty HMAC a kontrolní součty integrity souborů, kde odolnost vůči kolizím ze strany útočníka není požadována.

Proč používat tento generátor SHA-1?

Generujte SHA-1 hashe okamžitě bez instalace čehokoli nebo psaní kódu. Vložte text a získejte 40znakový hexadecimální výtah v reálném čase — užitečné pro ověřování starších kontrolních součtů, ladění vnitřností Gitu nebo testování pracovních postupů založených na hashi.

Okamžité hashování
Výstup se aktualizuje během psaní. Žádné klikání na tlačítka, žádné čekání — SHA-1 výtah se zobrazuje znak po znaku při úpravě vstupu.
🔒
Zpracování s prioritou soukromí
Veškeré hashování probíhá lokálně ve vašem prohlížeči pomocí Web Crypto API. Váš vstupní text nikdy neopustí vaše zařízení a není nikdy odeslán na žádný server.
📋
Kopírování jedním klikem
Zkopírujte hash do schránky jedním klikem. Přepínejte mezi výstupem v malých a velkých hexadecimálních písmenech tak, aby odpovídal formátu očekávanému vaším systémem.
🔍
Bez nutnosti účtu
Žádná registrace, žádné přihlášení, žádné limity použití. Otevřete stránku a ihned začněte hashovat. Funguje na každém zařízení s moderním prohlížečem.

Případy použití SHA-1

Vnitřnosti Gitu a ladění
Git identifikuje každý objekt (commit, strom, blob, tag) svým SHA-1 hashem. Při ladění příkazů nízké úrovně Gitu, ověřování souborů pack nebo psaní vlastních nástrojů pro Git vám rychlý generátor SHA-1 pomůže křížově ověřit identifikátory objektů oproti očekávaným hodnotám.
Ověření starších systémů
Mnohé starší systémy, registry balíčků a mechanismy aktualizací firmwaru stále publikují SHA-1 kontrolní součty spolu se staženými soubory. Generujte a porovnávejte SHA-1 hashe pro ověření integrity souborů, pokud SHA-256 výtahy nejsou k dispozici.
Integrita dílčích zdrojů (SRI)
Ačkoli jsou pro SRI hashe v HTML tazích script a link preferovány sha256 a sha384, některé starší konfigurace CDN stále spoléhají na SHA-1. Vygenerujte očekávaný výtah pro audit nebo přechod stávajících atributů SRI.
Testování kvality a regresní testy
Porovnávejte SHA-1 hashe odpovědí API, artefaktů sestavení nebo snímků databáze mezi testovacími běhy, abyste odhalili neočekávané změny bez provádění úplného porovnání bajt po bajtu velkých výstupů.
Deduplikace dat
Počítejte SHA-1 hashe obsahu souborů nebo datových záznamů v ETL kanálech pro identifikaci duplicit. 160bitový výstup poskytuje silnější záruku jedinečnosti než MD5 pro scénáře deduplikace bez přítomnosti útočníka.
Výuka a vzdělávání
SHA-1 je dobře zdokumentovaný algoritmus s rozsáhlou odbornou literaturou. Experimentujte s ním, abyste porozuměli konstrukci Merkle-Damgard, plánování zpráv a tomu, proč se odolnost vůči kolizím hroutí, když je délka výstupu příliš krátká ve srovnání s moderním výpočetním výkonem.

SHA-1 vs. jiné hašovací algoritmy

SHA-1 produkuje 160bitový výtah — delší než MD5 (128 bitů), ale výrazně kratší než algoritmy rodiny SHA-2. Níže uvedená tabulka porovnává velikosti výtahů, standardy a vhodné případy použití jednotlivých algoritmů.

AlgoritmusVelikost výtahuDélka hexadecimálního řetězceStandardNejlepší pro
SHA-1160 bits40 hex chars1995 / RFC 3174Deprecated — legacy git commits, old TLS
SHA-256256 bits64 hex chars2001 / FIPS 180-4TLS certificates, blockchain, JWTs
SHA-384384 bits96 hex chars2001 / FIPS 180-4Government systems, higher security margin
SHA-512512 bits128 hex chars2001 / FIPS 180-4Digital signatures, HMAC with large keys
MD5128 bits32 hex chars1992 / RFC 1321Checksums only — broken since 2004
SHA-3256 bits64 hex chars2015 / FIPS 202Post-quantum readiness, alternative to SHA-2
BLAKE3256 bits64 hex chars2020High-performance checksums, Merkle trees

Jak funguje SHA-1

SHA-1 sleduje konstrukci Merkle-Damgard: zpráva je doplněna, rozdělena do 512bitových bloků a každý blok je zpracován přes 80 kol bitových operací, které míchají vstup s plánováním zprávy odvozeným z bloku. Pět 32bitových stavových slov (H0 až H4) nese průběžný stav hashe a konečné zřetězení těchto slov produkuje 160bitový výtah.

Input: "hello world"
SHA-1: 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
(160 bits = 20 bytes = 40 hex characters)
KrokPopis
PaddingAppend a 1-bit, then zeros, until message length is 448 mod 512. Append the original length as a 64-bit big-endian integer.
Block splittingDivide the padded message into 512-bit (64-byte) blocks.
ExpansionExpand each 16-word block into 80 words using a left-rotate-by-1 XOR feedback schedule.
CompressionProcess 80 rounds per block using four nonlinear functions (Ch, Parity, Maj, Parity) across rounds 0-19, 20-39, 40-59, and 60-79.
OutputConcatenate the five 32-bit state words (H0-H4) into a 160-bit (20-byte) digest, rendered as 40 hexadecimal characters.

Klíčový rozdíl mezi SHA-1 a MD5 spočívá v počtu stavových slov (5 vs. 4), počtu kol na blok (80 vs. 64) a použití plánování zpráv se zpětnovazební rotací vlevo. Tyto rozdíly dávají SHA-1 větší výstup (160 vs. 128 bitů) a původně poskytovaly vyšší bezpečnostní rezervu, přestože oba algoritmy jsou nyní považovány za prolomené z hlediska odolnosti vůči kolizím.

Ukázky kódu

Jak generovat SHA-1 hashe v oblíbených jazycích a prostředích. Na rozdíl od MD5 je SHA-1 dostupná v prohlížečovém Web Crypto API, takže ji lze použít bez externích knihoven jak v prohlížeči, tak v prostředí Node.js.

JavaScript (Web Crypto API — browser & Node.js)
// SHA-1 is available in the Web Crypto API
async function sha1(text) {
  const data = new TextEncoder().encode(text)
  const hashBuffer = await crypto.subtle.digest('SHA-1', data)
  const hashArray = Array.from(new Uint8Array(hashBuffer))
  return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}

await sha1('hello world')
// → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"

// Node.js (built-in crypto module)
const crypto = require('crypto')
crypto.createHash('sha1').update('hello world').digest('hex')
// → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"
Python
import hashlib

# Basic SHA-1 hash
result = hashlib.sha1(b'hello world').hexdigest()
print(result)  # → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"

# Hash a string (encode to bytes first)
text = 'hello world'
hashlib.sha1(text.encode('utf-8')).hexdigest()
# → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"

# Hash a file in chunks
with open('file.bin', 'rb') as f:
    sha1 = hashlib.sha1()
    for chunk in iter(lambda: f.read(8192), b''):
        sha1.update(chunk)
    print(sha1.hexdigest())
Go
package main

import (
    "crypto/sha1"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := sha1.Sum(data)
    fmt.Printf("%x\n", hash)
    // → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
}
CLI (Linux / macOS)
# Using sha1sum (Linux) or shasum (macOS)
echo -n "hello world" | sha1sum
# → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed  -

# macOS
echo -n "hello world" | shasum -a 1
# → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed  -

# Hash a file
sha1sum package.json
# → a1b2c3d4e5f6...  package.json

# Using openssl (cross-platform)
echo -n "hello world" | openssl sha1
# → SHA1(stdin)= 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed

Často kladené otázky

Je SHA-1 stále bezpečná k použití?
SHA-1 není bezpečná pro bezpečnostně citlivé aplikace. Útok SHAttered z roku 2017 demonstroval praktické generování kolizí a útok s volenou předponou z roku 2020 náklady dále snížil. Pro digitální podpisy, certifikáty TLS nebo jakýkoli scénář, kde by útočník mohl vytvářet kolidující vstupy, použijte SHA-256 nebo SHA-3. Pro nezbezpečnostní účely, jako jsou kontrolní součty a klíče mezipaměti, kde vstup žádný útočník nekontroluje, SHA-1 nadále funguje.
Jaký je rozdíl mezi SHA-1 a SHA-256?
SHA-1 produkuje 160bitový (40hexadecimálních znaků) výtah a je zranitelná vůči útokům kolizí. SHA-256 produkuje 256bitový (64hexadecimálních znaků) výtah a patří do rodiny SHA-2, která nemá žádné známé praktické útoky. SHA-256 je přibližně o 20–30 % pomalejší než SHA-1 na stejném hardwaru, ale dalších 96 bitů výstupu a absence známých strukturálních slabin z ní činí výchozí doporučení pro každý nový projekt.
Proč Git používá SHA-1?
Když Linus Torvalds navrhl Git v roce 2005, byla SHA-1 považována za bezpečnou a nabízela dobrý poměr rychlosti a odolnosti vůči kolizím pro úložiště adresovatelné obsahem. Git používá SHA-1 jako identifikátor obsahu, nikoli jako bezpečnostní mechanismus — detekuje náhodné poškození, nikoli záměrné manipulace. Od roku 2021 Git přechází na SHA-256 prostřednictvím rámce rozšíření hashe popsaného v plánu git-hash-function-transition.
Lze SHA-1 hash zpětně převést na původní vstup?
Ne. SHA-1 je jednosměrná funkce, která při hashování zahazuje informace. Pro krátké nebo běžné vstupy mohou útočníci použít duhové tabulky nebo hrubou sílu k nalezení původního textu, ale to není reverze algoritmu — jde o vyčerpávající prohledávání vstupního prostoru. Pro hesla používejte bcrypt, scrypt nebo Argon2 místo jakékoli rychlé hašovací funkce.
Jak funguje útok SHAttered?
Útok SHAttered využívá strukturální slabiny kompresní funkce SHA-1. Pečlivým sestavením dvou různých 512bitových bloků zpráv, které produkují stejný mezilehlý stav hashe, vytvořili útočníci dva soubory PDF s identickými SHA-1 výtahy, ale odlišným viditelným obsahem. Útok vyžadoval přibližně 2^63 výpočtů SHA-1 — přibližně 6 500 let na jednom procesoru, ale proveditelné na GPU clusteru během měsíců. Náklady od té doby díky vylepšeným technikám dále klesly.
Jaký je rozdíl mezi SHA-1 a HMAC-SHA1?
SHA-1 je prostá hašovací funkce: hash = SHA1(zpráva). HMAC-SHA1 je ověřovací kód zprávy s klíčem: mac = HMAC(klíč, zpráva). HMAC obaluje hašovací funkci do konstruktu, který brání útokům prodloužením délky a vyžaduje tajný klíč. Zajímavé je, že HMAC-SHA1 je stále považována za bezpečnou pro ověřování zpráv, přestože samotná SHA-1 je prolomená z hlediska odolnosti vůči kolizím, protože bezpečnost HMAC závisí na vlastnostech pseudonáhodné funkce kompresní funkce, nikoli na odolnosti vůči kolizím.
Mám pro kontrolní součty souborů použít SHA-1 nebo MD5?
SHA-1 je lepší volbou než MD5 pro kontrolní součty souborů. MD5 produkuje 128bitový výtah a je prolomená od roku 2004, přičemž praktické útoky kolizí jsou nyní proveditelné v řádu sekund. SHA-1 produkuje 160bitový výtah a její útoky kolizí, ačkoli byly demonstrovány, zůstávají nákladnější. Pro jakýkoli nový systém však preferujte SHA-256 — poskytuje 256bitový výtah bez známých praktických útoků a je dobře podporována na všech platformách a v jazycích.