SHA-384 Hash Generator
Vygenerujte SHA-384 hash z libovolného textu
Vstupní text
SHA-384 hash
SHA-384 hash se zobrazí zde…
Co je hašování SHA-384?
SHA-384 je kryptografická hašovací funkce definovaná v NIST FIPS 180-4 jako součást rodiny SHA-2. Přijímá vstup libovolné délky a produkuje pevný 384bitový (48bajtový) výtah zprávy, obvykle zobrazovaný jako 96znakový hexadecimální řetězec. SHA-384 se hojně používá v šifrovacích sadách TLS, podpisech digitálních certifikátů a vládních systémech, které vyžadují vyšší odolnost vůči kolizím, než poskytuje SHA-256.
Interně je SHA-384 zkrácenou variantou SHA-512. Používá stejnou velikost bloku 1024 bitů, 80 kompresních kol a 64bitovou aritmetiku slov jako SHA-512, ale začíná s odlišnou sadou počátečních hodnot hashe (odvozených z 9. až 16. prvočísla) a vydává pouze prvních 384 bitů konečného stavu. Toto zkrácení znamená, že SHA-384 produkuje pro identické vstupy odlišný výtah než SHA-512, přestože sdílí stejný základní algoritmus.
Protože SHA-384 pracuje s 64bitovými slovy, běží na moderních 64bitových procesorech rychleji než SHA-256 a zároveň produkuje větší výtah. To z ní činí praktický střed: je silnější než SHA-256 (192bitová odolnost vůči kolizím oproti 128bitové) bez režijních nákladů na ukládání 128znakového hexadecimálního výstupu SHA-512. SHA-384 je výchozí hashovací funkce pro ověřovací podpisy certifikátů TLS 1.3 a je vyžadována normou NSA Suite B (nyní CNSA) pro data s označením TOP SECRET.
Proč používat online generátor SHA-384?
Generování SHA-384 hashů obvykle vyžaduje příkaz v terminálu nebo psaní kódu. Tento nástroj běžící v prohlížeči vám umožní vypočítat SHA-384 výtahy okamžitě bez instalace čehokoli nebo odesílání dat na server. Ať už potřebujete vygenerovat SRI hash pro prostředek na CDN, ověřit kontrolní součet souboru, nebo porovnat výstup SHA-384 s SHA-256 pro stejný vstup, tento nástroj vám poskytne okamžitý způsob práce se SHA-384 výtahy bez závislostí v libovolném moderním prohlížeči.
Případy použití generátoru SHA-384 hashů
Srovnání variant rodiny SHA-2
SHA-384 patří do rodiny SHA-2 spolu s několika dalšími variantami. Níže uvedená tabulka ukazuje, jak se liší ve velikosti výtahu, délce výstupu a typických aplikacích.
| Varianta | Velikost výtahu | Délka hexadecimálního řetězce | Bajty | Nejlepší pro |
|---|---|---|---|---|
| SHA-384 | 384 bits | 96 hex chars | 48 bytes | TLS 1.2/1.3, government/CNSA, certificate signatures |
| SHA-256 | 256 bits | 64 hex chars | 32 bytes | TLS, blockchain, code signing, JWTs, SRI |
| SHA-512 | 512 bits | 128 hex chars | 64 bytes | Digital signatures, HMAC with large keys |
| SHA-224 | 224 bits | 56 hex chars | 28 bytes | Truncated SHA-256 — rare, specific compliance |
| SHA-512/256 | 256 bits | 64 hex chars | 32 bytes | SHA-512 speed on 64-bit CPUs, 256-bit output |
SHA-384 vs SHA-256 vs SHA-512 vs SHA-3-384
Výběr mezi SHA-384 a jinými hašovacími algoritmy závisí na vašich bezpečnostních požadavcích, platformních omezeních a výkonnostních potřebách. Toto srovnání pokrývá nejrelevantnější vlastnosti.
| Vlastnost | SHA-384 | SHA-256 | SHA-512 | SHA-3-384 |
|---|---|---|---|---|
| Digest size | 384 bits (96 hex) | 256 bits (64 hex) | 512 bits (128 hex) | 384 bits (96 hex) |
| Internal state | 512 bits (8x64-bit) | 256 bits (8x32-bit) | 512 bits (8x64-bit) | 1600 bits (sponge) |
| Block size | 1024 bits | 512 bits | 1024 bits | 832 bits |
| Rounds | 80 | 64 | 80 | 24 |
| Word size | 64 bits | 32 bits | 64 bits | N/A (sponge) |
| Length extension | Resistant | Vulnerable | Vulnerable | Resistant |
| 64-bit performance | Fast (native ops) | Slower (32-bit ops) | Fast (native ops) | Moderate |
| Standard | FIPS 180-4 | FIPS 180-4 | FIPS 180-4 | FIPS 202 |
| Web Crypto API | Yes | Yes | Yes | No |
Jak SHA-384 funguje interně
SHA-384 zpracovává vstup prostřednictvím stejné konstrukce Merkle–Damgård jako SHA-512. Vstup je doplněn na násobek 1024 bitů, rozdělen do bloků a každý blok prochází 80 koly míchání pomocí funkcí Ch, Maj a dvou funkcí Sigma s 64bitovou aritmetikou slov. Klíčový rozdíl od SHA-512 spočívá v počátečních hodnotách hashe: SHA-384 používá hodnoty odvozené z desetinných částí druhých odmocnin 9. až 16. prvočísla, zatímco SHA-512 používá prvních 8 prvočísel. Po zpracování všech bloků SHA-384 zkrátí 512bitový interní stav na prvních 384 bitů.
SHA-384: fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd
(384 bits = 48 bytes = 96 hex characters)
Zkrácení a odlišná inicializace znamenají, že SHA-384 a SHA-512 vždy produkují pro stejný vstup různé výtahy. SHA-384 je díky tomu také přirozeně odolná vůči útokům prodloužením délky, na rozdíl od SHA-256 a SHA-512, kde může útočník připojit data a vypočítat platný hash bez znalosti původní zprávy.
Ukázky kódu SHA-384
SHA-384 je nativně podporována ve všech hlavních jazycích a prostředích. Níže jsou funkční příklady, které můžete zkopírovat přímo do svých projektů.
// Works in all modern browsers and Node.js 18+
async function sha384(text) {
const data = new TextEncoder().encode(text)
const hashBuffer = await crypto.subtle.digest('SHA-384', data)
const hashArray = Array.from(new Uint8Array(hashBuffer))
return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}
await sha384('hello world')
// → "fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd"
// Node.js (built-in crypto module)
const crypto = require('crypto')
crypto.createHash('sha384').update('hello world').digest('hex')
// → "fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd"import hashlib
# Basic SHA-384 hash
result = hashlib.sha384(b'hello world').hexdigest()
print(result)
# → "fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd"
# Hash a string with Unicode characters
text = 'café ☕'
hashlib.sha384(text.encode('utf-8')).hexdigest()
# → 96-character hex string
# Hash a file in chunks (memory-efficient)
with open('release.tar.gz', 'rb') as f:
sha = hashlib.sha384()
for chunk in iter(lambda: f.read(8192), b''):
sha.update(chunk)
print(sha.hexdigest())package main
import (
"crypto/sha512"
"fmt"
)
func main() {
data := []byte("hello world")
// SHA-384 lives in the crypto/sha512 package
hash := sha512.Sum384(data)
fmt.Printf("%x\n", hash)
// → fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd
}# Using sha384sum (Linux) echo -n "hello world" | sha384sum # → fdbd8e75a67f29f701a4e040385e2e23... - # macOS echo -n "hello world" | shasum -a 384 # → fdbd8e75a67f29f701a4e040385e2e23... - # Using openssl (cross-platform) echo -n "hello world" | openssl dgst -sha384 # → SHA2-384(stdin)= fdbd8e75a67f29f701a4e040385e2e23986303ea... # Verify a file checksum sha384sum myfile.bin > checksum.txt sha384sum -c checksum.txt # → myfile.bin: OK