Generator Hash SHA-256
Hasilkan hash SHA-256 dari teks apa pun
Teks Input
Hash SHA-256
Hash SHA-256 akan ditampilkan di sini…
Apa Itu Hashing SHA-256?
SHA-256 (Secure Hash Algorithm 256-bit) adalah fungsi hash kriptografis dari keluarga SHA-2, yang diterbitkan oleh NIST pada tahun 2001 sebagai bagian dari FIPS 180-2 (diperbarui dalam FIPS 180-4). Untuk input apa pun — satu karakter, file berukuran beberapa gigabyte, atau string kosong — SHA-256 menghasilkan digest tetap 256-bit (32-byte), yang secara konvensional ditampilkan sebagai 64 karakter heksadesimal. SHA-256 adalah fungsi hash yang paling banyak digunakan dalam sistem produksi saat ini, menjadi fondasi rantai sertifikat TLS, proof-of-work Bitcoin, Subresource Integrity (SRI), dan alur kerja penandatanganan kode.
SHA-256 adalah fungsi satu arah: menghitung hash dari input berlangsung cepat (ratusan megabyte per detik pada perangkat keras modern), tetapi membalikkan prosesnya — menemukan input yang menghasilkan hash tertentu — tidak dapat dilakukan secara komputasi. Sifat ini, yang disebut preimage resistance, membuat SHA-256 cocok untuk hashing kata sandi (bila dikombinasikan dengan salt dan key-stretching), tanda tangan digital, dan verifikasi integritas data. Tidak seperti MD5 dan SHA-1, belum ada serangan tabrakan atau preimage yang berhasil dibuktikan terhadap SHA-256 secara penuh.
Keluarga SHA-2 mencakup enam varian: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, dan SHA-512/256. SHA-256 beroperasi pada kata 32-bit dengan 64 putaran per blok, dioptimalkan untuk prosesor 32-bit. SHA-512 menggunakan kata 64-bit dan 80 putaran, yang bisa lebih cepat pada platform 64-bit. Untuk sebagian besar aplikasi yang membutuhkan digest 256-bit, SHA-256 tetap menjadi rekomendasi default dari NIST, IETF, dan CA/Browser Forum.
Mengapa Menggunakan Generator SHA-256 Online?
Menghasilkan hash SHA-256 biasanya memerlukan perintah terminal atau beberapa baris kode. Alat berbasis browser ini memungkinkan Anda menghitung digest SHA-256 tanpa menginstal apapun, berpindah konteks, atau menulis skrip.
Kasus Penggunaan SHA-256
Perbandingan Varian Keluarga SHA-2
SHA-256 termasuk dalam keluarga SHA-2 yang didefinisikan dalam FIPS 180-4. Setiap varian memiliki pertukaran antara ukuran digest, karakteristik performa, dan margin keamanan. Tabel di bawah membandingkan semua varian SHA-2 yang kemungkinan besar akan Anda temui.
| Varian | Ukuran Digest | Panjang Hex | Ukuran Byte | Terbaik untuk |
|---|---|---|---|---|
| SHA-256 | 256 bits | 64 hex chars | 32 bytes | TLS, blockchain, code signing, JWTs, SRI |
| SHA-224 | 224 bits | 56 hex chars | 28 bytes | Truncated SHA-256 — rare, specific compliance |
| SHA-384 | 384 bits | 96 hex chars | 48 bytes | Government / CNSS, higher collision margin |
| SHA-512 | 512 bits | 128 hex chars | 64 bytes | Digital signatures, HMAC with large keys |
| SHA-512/256 | 256 bits | 64 hex chars | 32 bytes | SHA-512 speed on 64-bit CPUs, 256-bit output |
SHA-256 vs SHA-1, MD5, dan SHA-3
Memilih algoritma hash yang tepat bergantung pada persyaratan keamanan dan batasan kompatibilitas Anda. SHA-256 menempati posisi praktis yang ideal: aman, didukung secara universal (termasuk Web Crypto API), dan cukup cepat untuk sebagian besar beban kerja. Tabel perbandingan di bawah mencakup properti yang paling penting saat memilih fungsi hash.
| Properti | SHA-256 | SHA-1 | MD5 | SHA-3-256 |
|---|---|---|---|---|
| Digest size | 256 bits (64 hex) | 160 bits (40 hex) | 128 bits (32 hex) | 256 bits (64 hex) |
| Security status | Secure | Broken (2017) | Broken (2004) | Secure |
| Collision resistance | 2^128 operations | Practical attack | Practical attack | 2^128 operations |
| Block size | 512 bits | 512 bits | 512 bits | 1600 bits (sponge) |
| Rounds | 64 | 80 | 64 | 24 |
| Standard | FIPS 180-4 | FIPS 180-4 | RFC 1321 | FIPS 202 |
| Web Crypto API | Yes | Yes | No | No |
| Primary use today | TLS, blockchain, SRI | Legacy git only | Non-security checksums | Backup standard |
Cara Kerja SHA-256 secara Internal
SHA-256 memproses input dalam blok 512-bit (64-byte) melalui konstruksi Merkle–Damgård. Algoritma menginisialisasi delapan kata status 32-bit (H0–H7) yang diturunkan dari bagian pecahan akar kuadrat delapan bilangan prima pertama. Setiap blok melewati 64 putaran pencampuran yang menggunakan operasi bitwise (AND, XOR, NOT, right-rotate, right-shift) dan 64 konstanta putaran yang diturunkan dari akar pangkat tiga dari 64 bilangan prima pertama.
SHA-256: b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
(256 bits = 32 bytes = 64 hex characters)
| Langkah | Deskripsi |
|---|---|
| Padding | Append a 1-bit, then zeros until the message length is 448 mod 512. Append the original message length as a 64-bit big-endian integer. |
| Block splitting | Divide the padded message into 512-bit (64-byte) blocks. |
| Message schedule | Expand each 16-word (32-bit) block into 64 words using sigma functions with right-rotate and right-shift operations. |
| Compression | Process 64 rounds per block using Ch, Maj, and two Sigma functions with 64 round constants derived from cube roots of the first 64 primes. |
| Output | Concatenate the eight 32-bit state words (H0-H7) into a 256-bit (32-byte) digest, rendered as 64 hexadecimal characters. |
Efek avalanche memastikan bahwa membalik satu bit pada input mengubah sekitar 50% bit output. Sifat ini, dikombinasikan dengan resistansi tabrakan 2^128, adalah alasan SHA-256 tetap menjadi rekomendasi dasar untuk aplikasi yang sensitif terhadap keamanan pada tahun 2026.
Contoh Kode SHA-256
SHA-256 tersedia secara native di setiap bahasa dan runtime utama. Web Crypto API menyediakannya di browser tanpa library apa pun. Contoh di bawah menunjukkan pola penggunaan nyata termasuk penanganan input Unicode dan hashing file.
// Works in all modern browsers and Node.js 18+
async function sha256(text) {
const data = new TextEncoder().encode(text)
const hashBuffer = await crypto.subtle.digest('SHA-256', data)
const hashArray = Array.from(new Uint8Array(hashBuffer))
return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}
await sha256('hello world')
// → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"
// Node.js (built-in crypto module)
const crypto = require('crypto')
crypto.createHash('sha256').update('hello world').digest('hex')
// → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"import hashlib
# Basic SHA-256 hash
result = hashlib.sha256(b'hello world').hexdigest()
print(result) # → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"
# Hash a string (encode to bytes first)
text = 'café ☕'
hashlib.sha256(text.encode('utf-8')).hexdigest()
# → "3eb53e00aa1bb4b1e8aab1ab38e56e6b8fb0b20e1cf7e1d19f36e4fad2537445"
# Hash a file in chunks (memory-efficient)
with open('release.tar.gz', 'rb') as f:
sha = hashlib.sha256()
for chunk in iter(lambda: f.read(8192), b''):
sha.update(chunk)
print(sha.hexdigest())package main
import (
"crypto/sha256"
"fmt"
)
func main() {
data := []byte("hello world")
hash := sha256.Sum256(data)
fmt.Printf("%x\n", hash)
// → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
}# Using sha256sum (Linux) or shasum (macOS) echo -n "hello world" | sha256sum # → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9 - # macOS echo -n "hello world" | shasum -a 256 # → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9 - # Verify a file checksum echo "b94d27b... myfile.bin" | sha256sum -c # → myfile.bin: OK # Using openssl (cross-platform) echo -n "hello world" | openssl dgst -sha256 # → SHA2-256(stdin)= b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9