Initializing, please wait a moment

MD5 vs SHA-256 - kapan menggunakan setiap fungsi hash


MD5 dan SHA-256 menghasilkan sidik jari dengan panjang tetap dari data input sembarang. Mereka terlihat dapat dipertukarkan dari luar - tempel teks, dapatkan hex - tetapi mereka memecahkan masalah yang berbeda. MD5 adalah sidik jari cepat, secara kriptografi rusak, cocok untuk pemeriksaan integritas non-adversarial. SHA-256 adalah hash modern, secara kriptografi solid, digunakan di mana saja seorang penyerang mungkin mencoba memalsukan tabrakan. Memilih yang tepat untuk pekerjaan menghemat waktu CPU dan mencegah celah keamanan nyata.


Apa yang sebenarnya dilakukan fungsi hash

Fungsi hash mengambil byte input dengan panjang apapun dan mengembalikan digest dengan panjang tetap. Input yang sama selalu menghasilkan digest yang sama. Mengubah satu bit input menghasilkan digest yang benar-benar berbeda (efek longsor). Digest adalah satu arah - Anda tidak dapat merekonstruksi input dari digest.

MD5 mengembalikan 128 bit (32 karakter hex). SHA-256 mengembalikan 256 bit (64 karakter hex). Keduanya deterministik. Keduanya cepat. Keduanya tidak mengungkapkan apapun tentang struktur input dari output.


Perbandingan berdampingan

AtributMD5SHA-256
Panjang digest128 bit (32 karakter hex)256 bit (64 karakter hex)
Dirancang1991 (Ron Rivest)2001 (NSA, FIPS 180-2)
Keluargagaris keturunan MD4keluarga SHA-2
Ketahanan tabrakanRusak sejak 2004 (Wang et al.); tabrakan praktis dalam hitungan detikTidak ada tabrakan praktis yang diketahui; ~2128 operasi untuk menemukan satu
Ketahanan preimage keduaDilemahkan tetapi tidak ada serangan praktis untuk input yang dihitung sebelumnyaKuat; ~2256 operasi
Kecepatan (x86-64 modern)~500 MB/s per inti~300 MB/s per inti (SHA-NI: ~1,5 GB/s)
Akselerasi hardwareTidak ada instruksi khususIntel SHA-NI, ekstensi crypto ARMv8
Aman untuk penggunaan kriptografiTidak - jangan gunakan untuk tanda tangan, cert pinning, hash kata sandiYa (di luar hash kata sandi - gunakan Argon2id/bcrypt untuk kata sandi)

Mengapa MD5 rusak dan apa artinya sebenarnya

Tabrakan adalah dua input berbeda yang menghasilkan digest yang sama. Ketahanan tabrakan MD5 secara teoritis rusak pada 2004 dan praktis rusak pada 2008 - seorang peneliti dapat membuat dua file dengan digest MD5 identik dalam hitungan detik pada hardware konsumen. Ini merusak penggunaan MD5 dalam tanda tangan digital (malware Flame memalsukan tanda tangan Windows Update pada 2012), sertifikat TLS (semua CA besar berhenti menerbitkan cert yang ditandatangani MD5 pada 2014), dan setiap konteks di mana seorang penyerang dapat mempengaruhi input.

Ketahanan preimage kedua MD5 lebih lemah daripada SHA-256 tetapi tidak ada serangan praktis yang diketahui terhadap input sembarang yang sudah ada. Itu adalah jendela sempit di mana MD5 masih aman: mengkonfirmasi bahwa digest yang sudah dihitung cocok dengan file yang Anda unduh, ketika tidak ada penyerang yang punya kesempatan untuk membuat tabrakan terhadap file spesifik itu.


Kapan MD5 masih baik-baik saja

Integritas file untuk lingkungan non-adversarial. Unduhan ISO Linux menerbitkan MD5 bersama dengan citra; jika hash cocok, unduhan Anda tidak rusak dalam perjalanan. Tidak ada penyerang yang membuat ISO palsu terhadap MD5 spesifik itu - mereka harus menerbitkan file mereka di situs upstream terlebih dahulu.

Cache de-duplikasi. Proxy caching mengindeks objek berdasarkan MD5 konten mereka untuk mendeteksi pengulangan. Tabrakan dalam konteks ini tidak berbahaya - dua objek berbeda dengan MD5 yang sama berarti satu cache miss, tidak ada konsekuensi keamanan.

Sidik jari baris database. "Apakah catatan ini berubah sejak sinkronisasi terakhir?" - MD5 baris, bandingkan dengan digest yang disimpan. Lebih cepat daripada SHA-256; model adversari tidak ada.

Pengalamatan konten Git. Git menggunakan SHA-1 (segera SHA-256), bukan MD5 - tetapi alasan desain berlaku: untuk penyimpanan yang dialamatkan konten di mana Anda mempercayai penulis, hash 128-bit sudah cukup jika tabrakan bukan vektor serangan.


Kapan SHA-256 adalah pilihan yang tepat

Tanda tangan digital. Sertifikat TLS, penandatanganan kode, penandatanganan JWT - di mana saja penyerang mendapatkan keuntungan dari memalsukan tanda tangan, gunakan SHA-256 atau lebih kuat.

Cert pinning dan sidik jari kunci publik. Sidik jari SHA-256 dari kunci publik sertifikat adalah standar untuk pinning.

Blockchain dan penyimpanan yang dapat dialamatkan konten di mana adversari berpartisipasi. Bitcoin menggunakan SHA-256 dua kali (SHA-256d) untuk header blok dan pengidentifikasi transaksi. Setiap penyimpanan di mana pengguna menyumbangkan konten dan tabrakan dapat dieksploitasi membutuhkan SHA-256.

HMAC untuk otentikasi pesan. HMAC-SHA-256 adalah baseline untuk penandatanganan permintaan API (AWS Signature v4, GitHub webhooks, Stripe). HMAC-MD5 masih digunakan dalam beberapa protokol lama tetapi semakin ditandai oleh pemindai kepatuhan.


Apa yang digunakan untuk kata sandi (spoiler: tidak ada)

Jangan gunakan MD5 atau SHA-256 secara langsung untuk penyimpanan kata sandi. Keduanya cepat - itu buruk untuk kata sandi. Penyerang dengan digest yang bocor dapat menguji miliaran kata sandi kandidat per detik pada GPU. Gunakan fungsi hash kata sandi: Argon2id (rekomendasi OWASP 2025), bcrypt, atau scrypt. Fungsi-fungsi ini sengaja lambat dan haus memori, sehingga penyerang hanya dapat menguji ribuan kandidat per detik, bukan miliaran.


Realitas kinerja di 2026

MD5 masih ~1,7× lebih cepat daripada SHA-256 pada CPU tanpa SHA-NI. Pada CPU dengan Intel SHA-NI (Goldmont+, 2017) atau ekstensi crypto ARMv8 (Cortex-A53 dan seterusnya), SHA-256 sebenarnya cocok atau melebihi throughput MD5 - kesenjangan kecepatan yang memotivasi pemilihan MD5 pada 2000-an tidak lagi berlaku.

JavaScript dalam browser dengan WebCrypto (crypto.subtle.digest('SHA-256', data)) mencapai ~200 MB/s pada laptop modern. Konverter MD5 kami menjalankan MD5 pada kecepatan serupa melalui implementasi wasm.


MD5 atau SHA-256: aturan batas kepercayaan

Pilihan antara MD5 dan SHA-256 bergantung pada satu pertanyaan - apakah adversari dapat mempengaruhi input yang Anda hash. Jika uploader jarak jauh, penyerang jaringan, atau pihak apapun di luar batas kepercayaan Anda dapat membentuk byte yang mencapai fungsi hash, pilih SHA-256 (atau SHA-3, atau BLAKE3) sehingga serangan tabrakan tidak dapat memalsukan digest yang cocok. Jika input berasal dari pipeline Anda sendiri dan Anda men-sidik-jari mereka untuk caching, de-duplikasi, atau deteksi perubahan, MD5 baik-baik saja dan berjalan sedikit lebih cepat pada CPU tanpa akselerasi SHA-NI. Keputusan bersifat biner dan hidup di batas kepercayaan; setelah Anda menamai di sisi mana batas itu input berada, algoritma yang digunakan ditentukan.


Alat terkait


← Kembali ke Developer Tools

Why trust these tools

  • Ten-plus years of web tooling. The freetoolonline editorial team has shipped browser-based utilities since 2015. The goal has never changed: get you to a working output fast, without an install.
  • Truly in-browser - no upload. Every file-processing tool on this site runs in your browser through modern Web APIs (File, FileReader, Canvas, Web Audio, WebGL, Web Workers). Your photo, PDF, audio, or text never leaves your device.
  • No tracking during tool use. Analytics ends at the page view. The actual input you paste, drop, or capture is never sent to any server and never written to any log.
  • Open-source core components. The processing engines underneath (libheif, libde265, pdf-lib, terser, clean-css, ffmpeg.wasm, and others) are public and audit-able. We link to each one in its tool page's footer.
  • Free, with or without ads. All tools are fully functional without sign-up. The Disable Ads button in the header is always available if you need a distraction-free run.