SHA-384 Hash Generator
Buat hash SHA-384 dari teks apa pun
Teks Input
Hash SHA-384
Hash SHA-384 akan muncul di sini…
Apa Itu Hashing SHA-384?
SHA-384 adalah fungsi hash kriptografis yang didefinisikan dalam NIST FIPS 180-4 sebagai bagian dari keluarga SHA-2. Fungsi ini menerima input dengan panjang berapa pun dan menghasilkan message digest tetap 384-bit (48-byte), yang biasanya ditampilkan sebagai 96 karakter heksadesimal. SHA-384 banyak digunakan dalam cipher suite TLS, tanda tangan sertifikat digital, dan sistem pemerintah yang membutuhkan margin ketahanan tabrakan lebih tinggi dari yang disediakan SHA-256.
Secara internal, SHA-384 adalah varian terpotong dari SHA-512. SHA-384 menggunakan ukuran blok 1024-bit, 80 putaran kompresi, dan aritmetika kata 64-bit yang sama dengan SHA-512, tetapi dimulai dengan kumpulan nilai hash awal yang berbeda (diturunkan dari bilangan prima ke-9 hingga ke-16) dan hanya mengeluarkan 384 bit pertama dari state akhir. Pemotongan ini berarti SHA-384 menghasilkan digest yang berbeda dari SHA-512 untuk input yang identik, meskipun berbagi algoritma inti yang sama.
Karena SHA-384 beroperasi pada kata 64-bit, fungsi ini berjalan lebih cepat dari SHA-256 pada prosesor 64-bit modern sambil menghasilkan digest yang lebih besar. Ini menjadikannya pilihan tengah yang praktis: lebih kuat dari SHA-256 (ketahanan tabrakan 192-bit vs. 128-bit) tanpa overhead penyimpanan dari output hex 128 karakter SHA-512. SHA-384 adalah hash default untuk tanda tangan verifikasi sertifikat TLS 1.3 dan diwajibkan oleh NSA Suite B (sekarang CNSA) untuk data TOP SECRET.
Mengapa Menggunakan Generator SHA-384 Online?
Menghasilkan hash SHA-384 biasanya memerlukan perintah terminal atau penulisan kode. Alat berbasis browser ini memungkinkan Anda menghitung digest SHA-384 secara instan tanpa menginstal apapun atau mengirim data ke server. Baik untuk membuat hash SRI bagi aset CDN, memverifikasi checksum file, atau membandingkan output SHA-384 dengan SHA-256 untuk input yang sama, alat ini memberi Anda cara langsung tanpa dependensi untuk bekerja dengan digest SHA-384 di browser modern mana pun.
Kasus Penggunaan SHA-384 Hash Generator
Perbandingan Varian Keluarga SHA-2
SHA-384 termasuk dalam keluarga SHA-2 bersama beberapa varian lainnya. Tabel di bawah menunjukkan perbedaan ukuran digest, panjang output, dan aplikasi khas masing-masing varian.
| Varian | Digest | Panjang Hex | Byte | Terbaik untuk |
|---|---|---|---|---|
| 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
Memilih antara SHA-384 dan algoritma hash lain bergantung pada persyaratan keamanan, batasan platform, dan kebutuhan performa Anda. Perbandingan ini mencakup properti yang paling relevan.
| Properti | 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 |
Cara Kerja SHA-384 Secara Internal
SHA-384 memproses input melalui konstruksi Merkle–Damgård yang sama dengan SHA-512. Input diisi (padding) menjadi kelipatan 1024 bit, dibagi menjadi blok-blok, dan setiap blok diproses melalui 80 putaran pencampuran menggunakan fungsi Ch, Maj, dan dua fungsi Sigma dengan aritmetika kata 64-bit. Perbedaan utama dari SHA-512 adalah nilai hash awal: SHA-384 menggunakan nilai yang diturunkan dari bagian pecahan akar kuadrat bilangan prima ke-9 hingga ke-16, sementara SHA-512 menggunakan 8 bilangan prima pertama. Setelah semua blok diproses, SHA-384 memotong state internal 512-bit menjadi 384 bit pertama.
SHA-384: fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd
(384 bits = 48 bytes = 96 hex characters)
Pemotongan dan inisialisasi yang berbeda ini berarti SHA-384 dan SHA-512 selalu menghasilkan digest yang berbeda untuk input yang sama. Hal ini juga membuat SHA-384 secara inheren tahan terhadap length-extension attacks, tidak seperti SHA-256 dan SHA-512 di mana penyerang dapat menambahkan data dan menghitung hash yang valid tanpa mengetahui pesan aslinya.
Contoh Kode SHA-384
SHA-384 didukung secara native di semua bahasa dan runtime utama. Berikut adalah contoh yang dapat langsung Anda salin ke proyek Anda.
// 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