SHA-512 Hash Generator
Hasilkan hash SHA-512 dari teks apa pun
Teks Input
Hash SHA-512
Hash SHA-512 akan muncul di sini…
Apa Itu Hashing SHA-512?
SHA-512 adalah fungsi hash kriptografis yang didefinisikan dalam NIST FIPS 180-4 sebagai anggota terbesar dari keluarga SHA-2. Fungsi ini menerima input dengan panjang berapa pun dan menghasilkan message digest tetap 512-bit (64-byte), yang ditampilkan sebagai 128 karakter heksadesimal. SHA-512 digunakan dalam tanda tangan digital (Ed25519 secara internal mengandalkan SHA-512), konstruksi HMAC, verifikasi integritas file, dan protokol kriptografis yang membutuhkan margin keamanan yang lebar.
SHA-512 beroperasi pada blok 1024-bit (128-byte) menggunakan aritmetika kata 64-bit dan 80 putaran kompresi. Delapan nilai hash awalnya diturunkan dari bagian pecahan akar kuadrat delapan bilangan prima pertama, dan 80 konstanta putarannya berasal dari akar pangkat tiga dari 80 bilangan prima pertama. Karena menggunakan operasi 64-bit native, SHA-512 seringkali lebih cepat dari SHA-256 pada prosesor 64-bit modern, meskipun menghasilkan digest yang lebih panjang.
SHA-384, SHA-512/224, dan SHA-512/256 adalah varian terpotong dari SHA-512 yang berbagi struktur internal yang sama tetapi menggunakan nilai hash awal yang berbeda dan menghasilkan lebih sedikit bit. Ketika Anda membutuhkan panjang digest maksimum yang ditawarkan keluarga SHA-2, atau ketika suatu protokol secara khusus mewajibkan SHA-512 (seperti Ed25519 atau skema derivasi kunci berbasis HMAC tertentu), SHA-512 adalah pilihan yang tepat. Fungsi ini menyediakan 256 bit ketahanan tabrakan, setara dengan SHA-3-512 dan jauh melebihi batas 128-bit SHA-256.
Mengapa Menggunakan Generator SHA-512 Online?
Menghasilkan hash SHA-512 biasanya memerlukan perintah terminal atau beberapa baris kode. Alat berbasis browser ini memungkinkan Anda membuat digest SHA-512 secara instan tanpa menginstal perangkat lunak, berpindah ke terminal, atau menulis skrip sekali pakai.
Kasus Penggunaan SHA-512 Hash Generator
Perbandingan Varian Keluarga SHA-2
SHA-512 termasuk dalam keluarga SHA-2 yang didefinisikan dalam FIPS 180-4. Tabel di bawah membandingkan varian SHA-2 yang berbagi arsitektur internal 64-bit SHA-512, beserta SHA-256 sebagai referensi.
| Varian | Ukuran Digest | Panjang Hex | Ukuran Byte | Terbaik untuk |
|---|---|---|---|---|
| SHA-256 | 256 bits | 64 hex chars | 32 bytes | TLS certificates, blockchain, JWTs, SRI |
| SHA-384 | 384 bits | 96 hex chars | 48 bytes | TLS 1.3 CertificateVerify, CNSA/Suite B |
| SHA-512 | 512 bits | 128 hex chars | 64 bytes | Digital signatures, HMAC, Ed25519, file integrity |
| SHA-512/224 | 224 bits | 56 hex chars | 28 bytes | SHA-512 speed on 64-bit CPUs, 224-bit output |
| SHA-512/256 | 256 bits | 64 hex chars | 32 bytes | SHA-512 speed on 64-bit CPUs, 256-bit output |
SHA-512 vs SHA-256 vs SHA-384 vs SHA-3-512
Algoritma hash yang tepat bergantung pada persyaratan keamanan, batasan performa, dan spesifikasi protokol Anda. SHA-512 menawarkan digest terlebar dalam keluarga SHA-2 dan seringkali lebih cepat dari SHA-256 pada perangkat keras 64-bit. Perbandingan ini mencakup properti yang paling penting saat memilih di antara keduanya.
| Properti | SHA-512 | SHA-256 | SHA-384 | SHA-3-512 |
|---|---|---|---|---|
| Digest size | 512 bits (128 hex) | 256 bits (64 hex) | 384 bits (96 hex) | 512 bits (128 hex) |
| Block size | 1024 bits | 512 bits | 1024 bits | 1600 bits (sponge) |
| Word size | 64 bits | 32 bits | 64 bits | N/A (sponge) |
| Rounds | 80 | 64 | 80 | 24 |
| Collision resistance | 2^256 operations | 2^128 operations | 2^192 operations | 2^256 operations |
| Security status | Secure | Secure | Secure | Secure |
| Standard | FIPS 180-4 | FIPS 180-4 | FIPS 180-4 | FIPS 202 |
| Web Crypto API | Yes | Yes | Yes | No |
| 64-bit optimized | Yes | No (32-bit words) | Yes | Yes |
| Primary use today | Ed25519, HMAC, file checksums | TLS, blockchain, SRI | TLS 1.3, CNSA | Backup standard |
Cara Kerja SHA-512 Secara Internal
SHA-512 memproses input melalui konstruksi Merkle–Damgård menggunakan blok 1024-bit. Algoritma menginisialisasi delapan kata status 64-bit (H0–H7) dari bagian pecahan akar kuadrat delapan bilangan prima pertama. Setiap blok melewati 80 putaran pencampuran yang menggunakan operasi bitwise (AND, XOR, NOT, right-rotate, right-shift) pada kata 64-bit, dikombinasikan dengan 80 konstanta putaran dari akar pangkat tiga dari 80 bilangan prima pertama.
SHA-512: 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f
989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f
(512 bits = 64 bytes = 128 hex characters)
| Langkah | Deskripsi |
|---|---|
| Padding | Append a 1-bit, then zeros until the message length is 896 mod 1024. Append the original length as a 128-bit big-endian integer. |
| Block splitting | Divide the padded message into 1024-bit (128-byte) blocks. |
| Message schedule | Expand each 16-word (64-bit) block into 80 words using sigma functions with right-rotate and right-shift operations on 64-bit values. |
| Compression | Process 80 rounds per block using Ch, Maj, and two Sigma functions with 80 round constants derived from the cube roots of the first 80 primes. |
| Output | Concatenate the eight 64-bit state words (H0–H7) into a 512-bit (64-byte) digest, rendered as 128 hexadecimal characters. |
Ukuran kata 64-bit yang lebih lebar adalah pembeda utama dari SHA-256. Pada CPU 64-bit, setiap operasi memproses dua kali lebih banyak bit per siklus, itulah mengapa SHA-512 seringkali mengungguli SHA-256 dalam benchmark meskipun menjalankan 80 putaran, bukan 64. Efek avalanche memastikan bahwa membalik satu bit input mengubah sekitar 50% dari semua 512 bit output.
Contoh Kode SHA-512
SHA-512 didukung secara native di setiap bahasa dan runtime utama. Web Crypto API menyediakannya di browser tanpa library apa pun. Contoh di bawah mencakup pola umum termasuk penanganan Unicode dan hashing file.
// Works in all modern browsers and Node.js 18+
async function sha512(text) {
const data = new TextEncoder().encode(text)
const hashBuffer = await crypto.subtle.digest('SHA-512', data)
const hashArray = Array.from(new Uint8Array(hashBuffer))
return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}
await sha512('hello world')
// → "309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f"
// Node.js (built-in crypto module)
const crypto = require('crypto')
crypto.createHash('sha512').update('hello world').digest('hex')
// → "309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f"import hashlib
# Basic SHA-512 hash
result = hashlib.sha512(b'hello world').hexdigest()
print(result)
# → "309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee..."
# Hash a string with Unicode (encode to bytes first)
text = 'café ☕'
hashlib.sha512(text.encode('utf-8')).hexdigest()
# → 128-character hex string
# Hash a large file in chunks (memory-efficient)
with open('release.tar.gz', 'rb') as f:
sha = hashlib.sha512()
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")
hash := sha512.Sum512(data)
fmt.Printf("%x\n", hash)
// → 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f...
}# Using sha512sum (Linux) or shasum (macOS) echo -n "hello world" | sha512sum # → 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee... - # macOS echo -n "hello world" | shasum -a 512 # → 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee... - # Verify a file checksum echo "309ecc48... myfile.bin" | sha512sum -c # → myfile.bin: OK # Using openssl (cross-platform) echo -n "hello world" | openssl dgst -sha512 # → SHA2-512(stdin)= 309ecc489c12d6eb4cc40f50c902f2b4...