SHA-384 Hash Generator
Генерує хеш SHA-384 з будь-якого тексту
Вхідний текст
Хеш SHA-384
Хеш SHA-384 з'явиться тут…
Що таке хешування SHA-384?
SHA-384 — це криптографічна хеш-функція, визначена у NIST FIPS 180-4 як частина сімейства SHA-2. Вона приймає вхідні дані довільної довжини та виробляє фіксований 384-бітний (48-байтний) дайджест повідомлення, який зазвичай відображається у вигляді 96-символьного шістнадцяткового рядка. SHA-384 широко використовується в наборах шифрів TLS, підписах цифрових сертифікатів і державних системах, де потрібен більший запас стійкості до колізій, ніж забезпечує SHA-256.
Внутрішньо SHA-384 є скороченим варіантом SHA-512. Він використовує той самий розмір блоку 1024 біт, 80 раундів стиснення та 64-бітну арифметику слів, що й SHA-512, але починає з іншого набору початкових значень хешу (похідних від 9-го по 16-й прості числа) і виводить лише перші 384 біт кінцевого стану. Це скорочення означає, що SHA-384 виробляє інший дайджест, ніж SHA-512, для однакових вхідних даних, незважаючи на те, що обидва використовують той самий базовий алгоритм.
Оскільки SHA-384 оперує 64-бітними словами, він працює швидше за SHA-256 на сучасних 64-бітних процесорах, водночас виробляючи більший дайджест. Це робить його практичним компромісом: надійніший за SHA-256 (192-бітна стійкість до колізій проти 128-бітної) без накладних витрат на зберігання 128-символьного шістнадцяткового виводу SHA-512. SHA-384 є хешем за замовчуванням для підписів перевірки сертифікатів TLS 1.3 і обов'язковий за вимогами NSA Suite B (тепер CNSA) для даних з грифом «Цілком таємно».
Навіщо використовувати онлайн-генератор SHA-384?
Генерація хешів SHA-384 зазвичай вимагає команди в терміналі або написання коду. Цей інструмент у браузері дозволяє обчислювати дайджести SHA-384 миттєво без встановлення будь-чого або надсилання даних на сервер. Незалежно від того, чи потрібно згенерувати хеш SRI для ресурсу на CDN, перевірити контрольну суму файлу або порівняти виведення SHA-384 з SHA-256 для однакових вхідних даних — цей інструмент надає зручний, безпосередній спосіб роботи з дайджестами SHA-384 у будь-якому сучасному браузері.
Сфери застосування SHA-384 Hash Generator
Порівняння варіантів сімейства SHA-2
SHA-384 належить до сімейства SHA-2 поряд із кількома іншими варіантами. Таблиця нижче показує, чим вони відрізняються за розміром дайджесту, довжиною виводу та типовими застосуваннями.
| Варіант | Дайджест | Довжина hex | Байти | Найкраще для |
|---|---|---|---|---|
| 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 проти SHA-256, SHA-512 та SHA-3-384
Вибір між SHA-384 та іншими алгоритмами хешування залежить від ваших вимог безпеки, обмежень платформи та потреб у продуктивності. Це порівняння охоплює найбільш релевантні властивості.
| Властивість | 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 |
Як SHA-384 працює всередині
SHA-384 обробляє вхідні дані через ту саму конструкцію Меркля–Дамгора, що й SHA-512. Вхідні дані доповнюються до кратного 1024 бітів, розбиваються на блоки, і кожен блок обробляється через 80 раундів змішування з використанням функцій Ch, Maj і двох функцій Sigma із 64-бітною арифметикою слів. Ключова відмінність від SHA-512 полягає в початкових значеннях хешу: SHA-384 використовує значення, похідні від дробових частин квадратних коренів з 9-го по 16-й прості числа, тоді як SHA-512 використовує перші 8 простих чисел. Після обробки всіх блоків SHA-384 скорочує 512-бітний внутрішній стан до перших 384 бітів.
SHA-384: fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd
(384 bits = 48 bytes = 96 hex characters)
Скорочення та різна ініціалізація означають, що SHA-384 і SHA-512 завжди виробляють різні дайджести для однакових вхідних даних. Це також робить SHA-384 природно стійким до атак розширення довжини, на відміну від SHA-256 і SHA-512, де зловмисник може додати дані та обчислити дійсний хеш, не знаючи вихідного повідомлення.
Приклади коду SHA-384
SHA-384 підтримується нативно в усіх основних мовах та середовищах виконання. Нижче наведено робочі приклади, які можна скопіювати безпосередньо у свої проєкти.
// 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