SHA-384 Hash Oluşturucu
Herhangi bir metinden SHA-384 hash oluştur
Giriş Metni
SHA-384 Hash
SHA-384 hash burada görüntülenecek…
SHA-384 Hashing Nedir?
SHA-384, NIST FIPS 180-4'te SHA-2 ailesinin bir parçası olarak tanımlanmış kriptografik bir hash fonksiyonudur. Rastgele uzunlukta bir girişi kabul eder ve genellikle 96 onaltılık karakter olarak görüntülenen sabit 384-bit (48 bayt) uzunluğunda bir ileti özeti üretir. SHA-384, TLS şifre paketlerinde, dijital sertifika imzalarında ve SHA-256'nın sağladığından daha yüksek çakışma direnci gerektiren devlet sistemlerinde yaygın biçimde kullanılmaktadır.
SHA-384 dahili olarak SHA-512'nin kısaltılmış bir varyantıdır. SHA-512 ile aynı 1024-bit blok boyutunu, 80 sıkıştırma turunu ve 64-bit sözcük aritmetiğini kullanır; ancak farklı bir başlangıç hash değeri kümesiyle (9. ile 16. asal sayılardan türetilmiş) başlar ve yalnızca son durumun ilk 384 bitini çıktı olarak verir. Bu kısaltma, aynı temel algoritmayı paylaşmalarına rağmen SHA-384'ün aynı giriş için SHA-512'den farklı bir özet üretmesi anlamına gelir.
SHA-384, 64-bit sözcükler üzerinde çalıştığından modern 64-bit işlemcilerde SHA-256'dan daha hızlı çalışırken daha büyük bir özet üretir. Bu durum onu pratik bir orta yol haline getirir: SHA-512'nin 128 karakterlik onaltılık çıktısının depolama yükü olmadan SHA-256'dan daha güçlü (192-bit çakışma direncine karşın 128-bit). SHA-384, TLS 1.3 sertifika doğrulama imzaları için varsayılan hash'tir ve GİZLİ verilerde NSA Suite B (artık CNSA) tarafından zorunlu tutulmaktadır.
Neden Çevrimiçi SHA-384 Oluşturucu Kullanılır?
SHA-384 hash üretmek genellikle bir terminal komutu veya kod yazmayı gerektirir. Bu tarayıcı tabanlı araç, herhangi bir şey yüklemeden veya sunucuya veri göndermeden SHA-384 özetlerini anında hesaplamanıza olanak tanır. CDN varlıkları için SRI hash'i üretmeniz, dosya sağlama toplamını doğrulamanız ya da aynı giriş için SHA-384 çıktısını SHA-256 ile karşılaştırmanız gerekirse bu araç, modern tarayıcılarda SHA-384 özetleriyle çalışmak için bağımsız ve anında bir yol sunar.
SHA-384 Hash Oluşturucu Kullanım Senaryoları
SHA-2 Ailesi Varyantları Karşılaştırması
SHA-384, SHA-2 ailesine birkaç başka varyantla birlikte aittir. Aşağıdaki tablo, özet boyutu, çıktı uzunluğu ve tipik uygulamalar açısından aralarındaki farkları göstermektedir.
| Varyant | Özet Boyutu | Onaltılık Uzunluk | Bayt | En Uygun Kullanım |
|---|---|---|---|---|
| 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
SHA-384 ile diğer hash algoritmaları arasındaki tercih, güvenlik gereksinimlerinize, platform kısıtlamalarınıza ve performans ihtiyaçlarınıza bağlıdır. Bu karşılaştırma en ilgili özellikleri kapsamaktadır.
| Özellik | 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 İçeride Nasıl Çalışır?
SHA-384, girişi SHA-512 ile aynı Merkle–Damgård yapısı üzerinden işler. Giriş 1024 bitin katına kadar doldurulur, bloklara bölünür ve her blok 64-bit sözcük aritmetiği kullanan Ch, Maj ve iki Sigma fonksiyonu ile 80 karıştırma turundan geçirilir. SHA-512'den temel fark başlangıç hash değerleridir: SHA-384, 9. ile 16. asal sayıların kareköklerinin kesirli kısımlarından türetilmiş değerler kullanırken SHA-512 ilk 8 asal sayıyı kullanır. Tüm bloklar işlendikten sonra SHA-384, 512-bit iç durumu ilk 384 bitiyle kısaltır.
SHA-384: fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd
(384 bits = 48 bytes = 96 hex characters)
Kısaltma ve farklı başlatma, SHA-384 ile SHA-512'nin aynı giriş için her zaman farklı özetler üretmesi anlamına gelir. Bu durum aynı zamanda SHA-384'ü, bir saldırganın orijinal iletiyi bilmeksizin veri ekleyip geçerli bir hash hesaplayabildiği uzunluk uzatma saldırılarına karşı SHA-256 ve SHA-512'nin aksine doğası gereği dirençli kılar.
SHA-384 Kod Örnekleri
SHA-384, tüm büyük dillerde ve çalışma ortamlarında yerel olarak desteklenmektedir. Aşağıda doğrudan projelerinize kopyalayabileceğiniz çalışan örnekler bulunmaktadır.
// 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