Skip to content
Kembali ke Blog
Tutorial

SHA-1 vs SHA-256 vs SHA-512: panduan hash 2026

SHA-1, SHA-256, SHA-384, SHA-512, dan SHA-3 dibandingkan dari sisi status keamanan, ukuran output, performa, dan kasus penggunaan nyata. Dilengkapi pohon keputusan dan jebakan umum.

14 menit baca

SHA-1 vs SHA-256 vs SHA-512: Memilih Algoritma Hash yang Tepat di 2026

Buka sertifikat TLS, basis data objek Git, header blok Bitcoin, manajer paket Linux, dan manifes image Docker — Anda akan menemukan hash SHA di setiap satu dari mereka. Namun bukan SHA yang sama. SHA-1, SHA-256, SHA-384, SHA-512, SHA-3: keluarga ini mencakup tiga dekade, dua garis desain, dan serangan tabrakan penting yang menghancurkan anggota tertua dalam produksi.

Panduan ini memetakan seluruh keluarga agar Anda dapat memilih algoritma yang tepat untuk kasus penggunaan Anda tanpa ragu-ragu.

Pohon Keputusan Cepat

Sebelum menyelami detailnya, berikut ringkasan satu tabel yang paling sering dibutuhkan pengembang:

Situasi AndaPilihan TerbaikAlasan
Sertifikat TLS/HTTPSSHA-256 (minimum), SHA-384 untuk keamanan tinggiDiwajibkan oleh CA/Browser Forum Baseline Requirements
Penandatanganan JWT (HMAC atau RSA)SHA-256 (HS256/RS256)Dukungan universal; SHA-384/512 untuk rezim kepatuhan
Checksum integritas perangkat lunakSHA-256Default industri; dipahami secara luas
Integritas arsip atau jangka panjangSHA-512Output lebih besar, margin aman untuk dekade mendatang
Content addressing (IPFS, OCI)SHA-256Standar de-facto untuk penyimpanan berbasis konten
Git (membaca/menulis repo yang ada)SHA-1 untuk yang ada; SHA-256 untuk baru via --object-format=sha256Git sedang dalam migrasi; SHA-1 masih mendominasi
Interoperasi dengan EthereumKeccak-256 (bukan NIST SHA-3)Ethereum menggunakan varian Keccak pra-standarisasi
Sistem defense-in-depth atau terklasifikasiSHA-384 atau SHA-512NSA Suite B; berpasangan dengan AES-256-GCM
Kode baru, tanpa batasan legacySHA-3 (SHA3-256)Garis desain berbeda; tidak rentan length-extension
Penyimpanan kata sandiTidak ada yang di atasGunakan bcrypt, Argon2id, atau scrypt — SHA terlalu cepat

Keluarga SHA Sekilas

AlgoritmaStandarBit OutputKarakter HexTahunStatus NISTPenggunaan Utama Saat Ini
SHA-1FIPS 180-4160401995Usang (2011), ditarik untuk tanda tangan digitalLegacy Git, sidik jari
SHA-256FIPS 180-4256642001AktifTLS, JWT, Bitcoin, checksum
SHA-384FIPS 180-4384962001AktifSuite B, TLS keamanan tinggi
SHA-512FIPS 180-45121282001AktifArsip, LUKS, HMAC-SHA-512
SHA-3 (varian apa pun)FIPS 202224/256/384/512bervariasi2015AktifGaris alternatif, akselerasi hardware

SHA-1 dan SHA-2 (grup 256/384/512) berbagi konstruksi Merkle-Damgard. SHA-3 menggunakan konstruksi sponge — perbedaan yang lebih penting dari yang terlihat, dibahas di bawah.

SHA-1: Rusak tapi Belum Mati

SHA-1 adalah tulang punggung tahun 2000-an. Sertifikat SSL, email S/MIME, sidik jari PGP, dan Git semuanya bertemu padanya. Kemudian pada Februari 2017, Google dan CWI Amsterdam menerbitkan SHAttered: serangan tabrakan chosen-prefix yang menghasilkan dua file PDF berbeda dengan hash SHA-1 yang identik. Serangan tersebut membutuhkan sekitar 6,5 × 10^19 evaluasi SHA-1 — mahal di 2017, terjangkau hari ini dengan komputasi cloud.

NIST telah mengusangkan SHA-1 untuk tanda tangan digital sejak 2011 (NIST Special Publication 800-131A). Demonstrasi SHAttered mempercepat pembersihan: browser berhenti mempercayai sertifikat TLS SHA-1 pada 2017, dan CA/Browser Forum mewajibkan SHA-256 untuk penerbitan baru.

Untuk apa SHA-1 masih digunakan:

  • Basis data objek Git: Git dirancang di sekitar SHA-1 sebagai hash konten cepat, bukan primitif keamanan. Format repositori mengodekan ID objek 40-hex secara keras. Jalur migrasi ke SHA-256 (git init --object-format=sha256) ada namun adopsinya lambat karena setiap platform hosting, setiap alat CI, dan setiap klon yang ada perlu bermigrasi secara bersamaan.
  • Sidik jari sistem legacy: Sidik jari kunci host SSH lama, sidik jari kunci PGP, dan skema nomor seri sertifikat masih mengekspos nilai SHA-1. Ini bersifat informatif, tidak kritis dari sisi keamanan di sebagian besar konteks.

Yang harus dilakukan: Jangan gunakan SHA-1 untuk hal baru apa pun. Untuk Git, risiko tabrakan rendah untuk alur kerja pengembangan perangkat lunak biasa (penyerang perlu mengontrol kedua file dalam tabrakan), tetapi proyek baru yang menggunakan --object-format=sha256 adalah arah jangka panjang yang tepat.

Buat hash SHA-1 di browser Anda: SHA-1 Generator.

SHA-256: Tulang Punggung

SHA-256 adalah algoritma yang menjalankan internet di 2026. Setiap sertifikat TLS yang diterbitkan oleh CA publik menggunakan SHA-256 untuk hash tanda tangannya. Setiap JWT yang ditandatangani dengan HS256, RS256, atau ES256 menggunakan SHA-256 secara internal. Proof-of-work Bitcoin adalah double-SHA-256. Hashing konten Docker adalah SHA-256. Integritas paket npm menggunakan SHA-256.

Alasannya praktis:

  • Margin keamanan: 256 bit output berarti 2^128 operasi untuk serangan brute-force preimage — melampaui hardware apa pun yang bisa dibayangkan untuk masa mendatang yang dapat diprediksi. Level keamanan aktual sedikit lebih rendah karena serangan tabrakan birthday-bound (2^128 operasi), masih tidak bisa ditembus.
  • Akselerasi hardware: SHA-256 diimplementasikan di silikon pada setiap CPU Intel Goldmont+ (ekstensi SHA-NI), setiap chip Apple silicon, setiap prosesor ARMv8, dan ASIC khusus di perangkat jaringan dan kontroler penyimpanan. Saat jalur hardware digunakan, throughput SHA-256 melampaui banyak alternatif perangkat lunak yang tampak lebih cepat.
  • Dukungan library yang sangat luas: Setiap library TLS, setiap library JWT, setiap standard library bahasa mengimplementasikan SHA-256. Anda tidak akan menabrak tembok kompatibilitas.

Untuk content addressing, verifikasi integritas, dan sebagian besar alur kerja penandatanganan, SHA-256 adalah default yang tepat kecuali standar tertentu mengharuskan sebaliknya.

Buat hash SHA-256 di browser Anda: SHA-256 Generator.

SHA-384: Spesialisasi TLS

SHA-384 adalah SHA-512 yang dipotong menjadi 384 bit. Ia dibuat untuk memberikan level keamanan 192-bit (setengah ukuran output adalah batas ketahanan tabrakan) dan dimasukkan dalam kriptografi NSA Suite B bersama AES-256-GCM dan kunci elliptic-curve P-384.

Dua properti membuat SHA-384 khususnya menarik untuk TLS:

  1. Kekebalan length-extension pada ukuran output ini: SHA-256 dan SHA-512 rentan terhadap serangan length-extension — penyerang yang mengetahui H(secret || message) dapat menghitung H(secret || message || extension) tanpa mengetahui rahasianya. SHA-384 dan SHA-512/256 dipotong dari status internal penuh, sehingga length-extension tidak berlaku. Jika Anda menggunakan hash SHA mentah sebagai MAC (bukan HMAC), SHA-384 lebih aman.
  2. Kepatuhan Suite B: Organisasi yang harus memenuhi persyaratan suite NSA/CNSA (Commercial National Security Algorithm) harus menggunakan SHA-384 atau SHA-512 bersama RSA-3072+, ECDH P-384, dan AES-256. Jika pelanggan Anda adalah badan federal AS atau kontraktor yang beroperasi di bawah persyaratan FIPS 140-3, SHA-384 mungkin diwajibkan.

SHA-384 tidak secara berarti lebih aman dari SHA-256 untuk sebagian besar kasus penggunaan — kesenjangan praktis antara ketahanan tabrakan 128-bit dan 192-bit bersifat teoritis pada level komputasi saat ini. Pilih ketika kepatuhan atau pasangan Suite B mengharuskannya, bukan untuk penggunaan umum.

Buat hash SHA-384 di browser Anda: SHA-384 Generator.

SHA-512: Ketika Anda Butuh Lebih Banyak Bit

SHA-512 menghasilkan digest 512-bit (128 karakter hex). Pada hardware 64-bit, ia sering lebih cepat dari SHA-256 karena algoritma beroperasi pada kata 64-bit daripada kata 32-bit — jadwal internal SHA-256 menggunakan aritmetika 32-bit, sementara SHA-512 menggunakan aritmetika 64-bit yang lebih efisien pada CPU modern.

Benchmark pada hardware 64-bit (indikatif; browser Web Crypto API):

AlgoritmaPerkiraan Throughput
SHA-1~600 MB/s
SHA-256~500 MB/s
SHA-384~700 MB/s
SHA-512~700 MB/s
SHA-3-256~300 MB/s

Catatan: SHA-384 dan SHA-512 berbagi fungsi kompresi internal yang sama, sehingga keduanya berjalan pada kecepatan yang sama. SHA-256 lebih lambat pada 64-bit karena ukuran kata 32-bit-nya berarti lebih banyak iterasi untuk memproses setiap blok pesan 512-bit. Pada hardware 32-bit atau terbatas, SHA-256 lebih cepat.

SHA-512 cocok untuk:

  • Integritas arsip: Checksum yang dimaksudkan untuk bertahan selama dekade mendapat manfaat dari margin output yang lebih besar.
  • Enkripsi disk penuh: Linux LUKS menggunakan SHA-512 sebagai hash PBKDF derivasi kunci default (sebagai komponen PBKDF2, bukan sebagai hash standalone).
  • HMAC-SHA-512: Digunakan dalam beberapa skema penandatanganan JWT (HS512) dan otentikasi API di mana MAC yang lebih besar lebih disukai.
  • Menghasilkan data pseudorandom dalam jumlah besar: Aplikasi yang meng-hash seed dan membutuhkan banyak bit output dapat menggunakan SHA-512 untuk mengurangi jumlah panggilan hash.

Buat hash SHA-512 di browser Anda: SHA-512 Generator.

SHA-3: Filosofi Desain yang Berbeda

SHA-3 bukan SHA-2 dengan output lebih besar. Ini adalah algoritma yang secara fundamental berbeda berdasarkan konstruksi sponge yang disebut Keccak, dirancang oleh Guido Bertoni, Joan Daemen, Michaël Peeters, dan Gilles Van Assche. NIST memilihnya sebagai pemenang kompetisi publik tujuh tahun (2007–2012) yang dimaksudkan untuk menghasilkan keluarga hash yang dapat berfungsi sebagai cadangan jika kelemahan ditemukan dalam konstruksi Merkle-Damgard SHA-2.

Konstruksi sponge bekerja berbeda dari Merkle-Damgard:

  1. Input dipadding dan dipecah menjadi blok.
  2. Setiap blok di-XOR ke bagian pertama dari status internal besar (the “rate”), lalu seluruh status dipermutasi dengan permutasi Keccak-f.
  3. Setelah menyerap semua input, output “diperas” keluar dari bagian rate dari status.

Karena output diekstrak hanya dari sebagian status, dan karena bagian kapasitas tidak pernah langsung terekspos, konstruksi sponge secara inheren kebal terhadap serangan length-extension tanpa pemotongan.

Varian standar SHA-3 (FIPS 202):

VarianBit OutputLevel Keamanan
SHA3-224224112-bit
SHA3-256256128-bit
SHA3-384384192-bit
SHA3-512512256-bit
SHAKE128variabel128-bit
SHAKE256variabel256-bit

SHA-3 vs SHA-2 dalam praktik:

SHA-3 belum banyak digunakan dalam protokol yang dirancang sebelum 2015 — TLS, JWT, dan sebagian besar infrastruktur internet masih menggunakan SHA-2. SHA-3 mulai muncul dalam skema tanda tangan pasca-kuantum (CRYSTALS-Dilithium, SPHINCS+ menggunakan SHA-3 secara internal), desain protokol baru yang menginginkan cadangan dari garis desain berbeda, dan hardware di mana permutasi Keccak berakselerasi dengan baik. Dalam perangkat lunak murni, SHA-3 sekitar 40% lebih lambat dari SHA-256 pada x86.

Buat hash SHA-3 di browser Anda: SHA-3 Generator.

Perbedaan Keccak-256 Ethereum

Sebuah gotcha kritis: Ethereum tidak menggunakan NIST SHA-3. Ethereum dirancang saat kompetisi Keccak berlangsung dan sebelum NIST menyelesaikan FIPS 202. Ethereum Virtual Machine menggunakan submisi Keccak-256 asli, yang menggunakan padding berbeda dari standar NIST SHA-3 yang telah diselesaikan.

Secara spesifik:

  • NIST SHA3-256 menambahkan padding 0x06 sebelum blok terakhir.
  • Keccak-256 asli (yang digunakan Ethereum) menambahkan padding 0x01.

Input yang sama menghasilkan hash yang berbeda. Memanggil NIST SHA3-256 dan memanggil keccak256 Ethereum tidak dapat dipertukarkan. Sebagian besar bahasa memiliki keduanya: dalam Python, hashlib.sha3_256() adalah NIST SHA-3; untuk Keccak-256 seperti yang digunakan Ethereum, Anda memerlukan library seperti pysha3 (yang mengimplementasikan keccak_256). Dalam JavaScript, library js-sha3 mengekspos keduanya. SHA-3 Generator mengimplementasikan NIST SHA3-256 — jika Anda memerlukan hash Keccak-256 Ethereum, gunakan alat khusus Ethereum.

Benchmark Performa

Angka di bawah ini indikatif untuk browser Web Crypto API pada laptop x86-64 modern. Throughput aktual bervariasi dengan hardware, ukuran pesan, dan apakah platform menggunakan jalur akselerasi hardware.

AlgoritmaThroughput streaming (64-bit)
SHA-1~600 MB/s
SHA-256~500 MB/s
SHA-384~700 MB/s
SHA-512~700 MB/s
SHA-3-256~300 MB/s

Untuk pesan kecil (token API, checksum di bawah beberapa KB), semua algoritma selesai dalam di bawah 2 µs — perbedaannya tidak terlihat. Untuk data besar (tarball, image disk), SHA-384/512 mengalahkan SHA-256 pada sistem 64-bit karena beroperasi pada kata 64-bit. SHA-3 lebih lambat dalam perangkat lunak murni; lebih baik gunakan SHA-2 dalam kode yang kritis throughput kecuali akselerasi hardware Keccak tersedia. Throughput SHA-1 tidak pernah menjadi alasan untuk menggunakannya.

Jebakan Umum

Ketidakcocokan encoding

SHA beroperasi pada byte. Jika Anda meng-hash string "hello" di browser di mana JavaScript mengenkodenya sebagai UTF-16 daripada UTF-8, Anda mendapatkan digest yang berbeda dari skrip Python yang menggunakan str.encode("utf-8"). Selalu normalisasi ke UTF-8 sebelum meng-hash teks.

Pola yang konsisten:

const encoder = new TextEncoder(); // UTF-8
const data = encoder.encode(inputString);
const hashBuffer = await crypto.subtle.digest("SHA-256", data);

Kurang salting untuk MAC

Menggunakan hash SHA mentah sebagai message authentication code (H(secret || message)) rentan terhadap serangan length-extension pada SHA-256 dan SHA-512. Gunakan HMAC (RFC 2104) sebagai gantinya: HMAC-SHA256(key, message). HMAC membungkus hash dengan pad berkunci inner dan outer yang mencegah serangan extension.

Length-extension pada SHA-256

Jika Anda membuat tanda tangan API sebagai SHA256(secret + payload), penyerang yang mengetahui hash yang dihasilkan dapat menghitung SHA256(secret + payload + attacker_extension) tanpa mengetahui rahasianya. Perbaikan: gunakan HMAC, atau gunakan SHA-3 (kebal secara konstruksi), atau gunakan SHA-384/SHA-512/256 (kebal karena pemotongan).

Mencampuradukkan Keccak-256 dengan NIST SHA-3

Seperti dijelaskan di atas: Ethereum menggunakan Keccak-256 dengan padding 0x01; NIST SHA3-256 menggunakan padding 0x06. Keduanya menghasilkan output yang berbeda dari input yang sama. Verifikasi varian mana yang diimplementasikan library Anda sebelum berintegrasi dengan kontrak Ethereum atau encoding Solidity ABI.

Menggunakan SHA untuk kata sandi

Algoritma SHA dirancang untuk menjadi cepat. Itulah tepatnya properti yang salah untuk penyimpanan kata sandi: cluster GPU dapat menghitung miliaran hash SHA-256 per detik, membuat serangan kamus terhadap basis data kata sandi yang di-hash SHA menjadi praktis. Untuk kata sandi, gunakan fungsi derivasi kunci yang memory-hard: Argon2id (direkomendasikan), bcrypt, atau scrypt. Jangan pernah menyimpan kata sandi sebagai hash SHA mentah, bahkan yang disalting.

Pertanyaan yang Sering Diajukan

Apa perbedaan antara SHA-1 dan SHA-256?

SHA-1 dan SHA-256 keduanya adalah fungsi hash Merkle-Damgard yang distandarisasi dalam FIPS 180-4, tetapi SHA-256 menghasilkan digest 256-bit versus digest 160-bit SHA-1. Yang lebih penting, SHA-1 telah dibobol: serangan tabrakan dunia nyata (SHAttered, 2017) mendemonstrasikan dua file PDF berbeda dengan hash SHA-1 yang sama. SHA-256 tidak memiliki serangan tabrakan yang diketahui dan menyediakan level ketahanan tabrakan 128-bit. Gunakan SHA-256 untuk hal apa pun yang memerlukan jaminan integritas; jangan gunakan SHA-1 untuk pekerjaan baru.

Apakah SHA-512 lebih cepat dari SHA-256?

Pada hardware 64-bit, ya, sering 30–40% lebih cepat untuk input besar. SHA-512 menggunakan aritmetika kata 64-bit, yang diproses secara native oleh CPU modern. SHA-256 menggunakan aritmetika kata 32-bit, memerlukan dua kali lebih banyak operasi per blok pesan pada hardware yang sama. Pada platform 32-bit atau mikrokontroler terbatas, SHA-256 lebih cepat. Untuk pesan pendek (di bawah beberapa KB), perbedaannya tidak terasa.

Haruskah saya migrasi dari SHA-1 ke SHA-256?

Untuk tanda tangan digital, sertifikat TLS, dan penandatanganan kode: ya, tentu saja — SHA-1 sudah usang dan aktif dibobol. Untuk repositori Git: jalur migrasi ada (git init --object-format=sha256) tetapi adopsinya lambat karena persyaratan koordinasi ekosistem; risiko tabrakan untuk penggunaan repositori tipikal rendah. Untuk sidik jari informatif (tampilan kunci host SSH): paparan keamanannya minimal, tetapi migrasi ke SHA-256 adalah kebersihan yang baik.

Bisakah SHA-256 dibalik?

Tidak. SHA-256 adalah fungsi satu arah berdasarkan desain. Diberikan sebuah hash, Anda tidak bisa secara matematis memulihkan input aslinya. Yang bisa dilakukan penyerang adalah menjalankan serangan kamus atau brute-force: meng-hash jutaan input kandidat dan membandingkannya. Untuk input dengan entropi rendah (string pendek, kata sandi umum, angka berurutan), tabel rainbow yang telah dihitung sebelumnya membuat ini praktis. Untuk input dengan entropi tinggi (UUID acak, file besar), pembalikan tidak layak secara komputasi. Inilah mengapa SHA saja tidak cocok untuk kata sandi — Anda memerlukan KDF yang lambat dan disalting.

Kapan saya harus menggunakan SHA-3 daripada SHA-2?

SHA-3 sesuai ketika: (a) Anda menginginkan hash dari garis desain yang berbeda sebagai asuransi terhadap kelemahan SHA-2 di masa depan; (b) protokol Anda memerlukan kekebalan length-extension tanpa menggunakan HMAC; (c) Anda mengimplementasikan skema tanda tangan pasca-kuantum yang menentukan SHA-3 secara internal; atau (d) Anda memiliki akselerasi hardware untuk Keccak dan membutuhkan throughput. Untuk sebagian besar kasus penggunaan sehari-hari (TLS, JWT, checksum), SHA-256 memiliki dukungan ekosistem yang lebih luas dan merupakan default yang pragmatis. SHA-3 tidak lebih aman dari SHA-2 pada ukuran output yang setara — ini adalah taruhan berbeda pada keamanan jangka panjang.

Mengapa Ethereum menggunakan Keccak-256 daripada NIST SHA-3?

Ethereum dirancang pada 2013–2014, sebelum NIST menerbitkan FIPS 202 (Agustus 2015) yang menyelesaikan standar SHA-3. Pada saat itu, submisi Keccak dianggap sebagai pemenang yang mungkin, dan penulis Ethereum menggunakannya langsung. Ketika NIST menyelesaikan standar, mereka mengubah padding pemisahan domain dari 0x01 (Keccak asli) menjadi 0x06, menghasilkan output yang berbeda dari input yang sama. Ethereum sudah diterapkan dengan padding Keccak asli dan tidak bisa mengubahnya. Jadi “Ethereum keccak256” dan “NIST SHA3-256” adalah algoritma yang berbeda meskipun berbagi permutasi Keccak-f yang mendasarinya.


Coba alat-alatnya: SHA-1 · SHA-256 · SHA-384 · SHA-512 · SHA-3 — semuanya berjalan di browser Anda, tidak ada data yang meninggalkan mesin Anda.

Tag: hash sha cryptography security

Artikel Terkait

Lihat semua artikel