SHA-256 Hash Generator
Vygenerujte SHA-256 hash z libovolného textu
Vstupní text
SHA-256 hash
SHA-256 hash se zobrazí zde…
Co je hašování SHA-256?
SHA-256 (Secure Hash Algorithm 256-bit) je kryptografická hašovací funkce z rodiny SHA-2, kterou NIST zveřejnil v roce 2001 v rámci standardu FIPS 180-2 (aktualizovaného jako FIPS 180-4). Pro libovolný vstup — jeden znak, soubor o několika gigabajtech nebo prázdný řetězec — SHA-256 produkuje pevný 256bitový (32bajtový) výtah, konvenčně zobrazený jako 64 hexadecimálních znaků. SHA-256 je dnes nejrozšířenější hašovací funkcí v produkčních systémech a tvoří základ řetězců certifikátů TLS, proof-of-work v Bitcoinu, Subresource Integrity (SRI) a procesů podepisování kódu.
SHA-256 je jednosměrná funkce: výpočet hashe ze vstupu je rychlý (stovky megabajtů za sekundu na moderním hardwaru), ale obrácení tohoto procesu — nalezení vstupu, který produkuje daný hash — je výpočetně neproveditelné. Tato vlastnost, zvaná odolnost vůči vzoru (preimage resistance), činí SHA-256 vhodnou pro hašování hesel (v kombinaci se solí a key-stretchingem), digitální podpisy a ověřování integrity dat. Na rozdíl od MD5 a SHA-1 nebyl u plné SHA-256 demonstrován žádný útok kolizí ani útok vzoru.
Rodina SHA-2 zahrnuje šest variant: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 a SHA-512/256. SHA-256 pracuje s 32bitovými slovy a 64 koly na blok, optimalizovaně pro 32bitové procesory. SHA-512 používá 64bitová slova a 80 kol, což může být rychlejší na 64bitových platformách. Pro většinu aplikací, kde postačuje 256bitový výtah, zůstává SHA-256 výchozím doporučením NIST, IETF a CA/Browser Forum.
Proč používat online generátor SHA-256?
Generování SHA-256 hashe obvykle vyžaduje příkaz v terminálu nebo několik řádků kódu. Tento nástroj běžící v prohlížeči umožňuje vypočítat SHA-256 výtahy bez instalace čehokoli, přepínání kontextů nebo psaní skriptu.
Případy použití SHA-256
Srovnání variant rodiny SHA-2
SHA-256 patří do rodiny SHA-2 definované v FIPS 180-4. Každá varianta představuje kompromis mezi velikostí výtahu, výkonnostními charakteristikami a bezpečnostní rezervou. Níže uvedená tabulka porovnává všechny varianty SHA-2, se kterými se pravděpodobně setkáte.
| Varianta | Velikost výtahu | Délka hexadecimálního řetězce | Velikost v bajtech | Nejlepší pro |
|---|---|---|---|---|
| SHA-256 | 256 bits | 64 hex chars | 32 bytes | TLS, blockchain, code signing, JWTs, SRI |
| SHA-224 | 224 bits | 56 hex chars | 28 bytes | Truncated SHA-256 — rare, specific compliance |
| SHA-384 | 384 bits | 96 hex chars | 48 bytes | Government / CNSS, higher collision margin |
| SHA-512 | 512 bits | 128 hex chars | 64 bytes | Digital signatures, HMAC with large keys |
| SHA-512/256 | 256 bits | 64 hex chars | 32 bytes | SHA-512 speed on 64-bit CPUs, 256-bit output |
SHA-256 vs. SHA-1 vs. MD5 vs. SHA-3
Výběr správného hašovacího algoritmu závisí na vašich bezpečnostních požadavcích a omezeních kompatibility. SHA-256 zaujímá praktický střed: je bezpečná, univerzálně podporovaná (včetně Web Crypto API) a dostatečně rychlá pro většinu úloh. Níže uvedená srovnávací tabulka pokrývá vlastnosti, které jsou při výběru hašovací funkce nejdůležitější.
| Vlastnost | SHA-256 | SHA-1 | MD5 | SHA-3-256 |
|---|---|---|---|---|
| Digest size | 256 bits (64 hex) | 160 bits (40 hex) | 128 bits (32 hex) | 256 bits (64 hex) |
| Security status | Secure | Broken (2017) | Broken (2004) | Secure |
| Collision resistance | 2^128 operations | Practical attack | Practical attack | 2^128 operations |
| Block size | 512 bits | 512 bits | 512 bits | 1600 bits (sponge) |
| Rounds | 64 | 80 | 64 | 24 |
| Standard | FIPS 180-4 | FIPS 180-4 | RFC 1321 | FIPS 202 |
| Web Crypto API | Yes | Yes | No | No |
| Primary use today | TLS, blockchain, SRI | Legacy git only | Non-security checksums | Backup standard |
Jak SHA-256 funguje interně
SHA-256 zpracovává vstup v 512bitových (64bajtových) blocích prostřednictvím konstrukce Merkle–Damgård. Algoritmus inicializuje osm 32bitových stavových slov (H0–H7) odvozených z desetinných částí druhých odmocnin prvních osmi prvočísel. Každý blok prochází 64 koly míchání, která využívají bitové operace (AND, XOR, NOT, pravá rotace, pravý posun) a 64 konstant kol odvozených z kubických kořenů prvních 64 prvočísel.
SHA-256: b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
(256 bits = 32 bytes = 64 hex characters)
| Krok | Popis |
|---|---|
| Padding | Append a 1-bit, then zeros until the message length is 448 mod 512. Append the original message length as a 64-bit big-endian integer. |
| Block splitting | Divide the padded message into 512-bit (64-byte) blocks. |
| Message schedule | Expand each 16-word (32-bit) block into 64 words using sigma functions with right-rotate and right-shift operations. |
| Compression | Process 64 rounds per block using Ch, Maj, and two Sigma functions with 64 round constants derived from cube roots of the first 64 primes. |
| Output | Concatenate the eight 32-bit state words (H0-H7) into a 256-bit (32-byte) digest, rendered as 64 hexadecimal characters. |
Lavinový efekt zajišťuje, že překlopení jediného bitu na vstupu změní přibližně 50 % výstupních bitů. Tato vlastnost spolu s odolností vůči kolizím 2^128 je důvodem, proč SHA-256 zůstává základním doporučením pro bezpečnostně citlivé aplikace v roce 2026.
Ukázky kódu SHA-256
SHA-256 je dostupná nativně v každém hlavním jazyce a prostředí. Web Crypto API ji poskytuje v prohlížečích bez jakékoli knihovny. Níže uvedené příklady ukazují vzory reálného použití včetně práce s Unicode vstupem a hašování souborů.
// Works in all modern browsers and Node.js 18+
async function sha256(text) {
const data = new TextEncoder().encode(text)
const hashBuffer = await crypto.subtle.digest('SHA-256', data)
const hashArray = Array.from(new Uint8Array(hashBuffer))
return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}
await sha256('hello world')
// → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"
// Node.js (built-in crypto module)
const crypto = require('crypto')
crypto.createHash('sha256').update('hello world').digest('hex')
// → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"import hashlib
# Basic SHA-256 hash
result = hashlib.sha256(b'hello world').hexdigest()
print(result) # → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"
# Hash a string (encode to bytes first)
text = 'café ☕'
hashlib.sha256(text.encode('utf-8')).hexdigest()
# → "3eb53e00aa1bb4b1e8aab1ab38e56e6b8fb0b20e1cf7e1d19f36e4fad2537445"
# Hash a file in chunks (memory-efficient)
with open('release.tar.gz', 'rb') as f:
sha = hashlib.sha256()
for chunk in iter(lambda: f.read(8192), b''):
sha.update(chunk)
print(sha.hexdigest())package main
import (
"crypto/sha256"
"fmt"
)
func main() {
data := []byte("hello world")
hash := sha256.Sum256(data)
fmt.Printf("%x\n", hash)
// → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
}# Using sha256sum (Linux) or shasum (macOS) echo -n "hello world" | sha256sum # → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9 - # macOS echo -n "hello world" | shasum -a 256 # → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9 - # Verify a file checksum echo "b94d27b... myfile.bin" | sha256sum -c # → myfile.bin: OK # Using openssl (cross-platform) echo -n "hello world" | openssl dgst -sha256 # → SHA2-256(stdin)= b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9