Initializing, please wait a moment

MD5 vs SHA-256 - kapan menggunakan setiap fungsi hash


MD5 dan SHA-256 keduanya menghasilkan sidik jari panjang tetap dari input apapun, tetapi hanya SHA-256 yang aman terhadap input adversarial. Ketahanan tabrakan MD5 gagal pada 2004. Untuk tanda tangan digital, gunakan SHA-256. Untuk pemeriksaan integritas non-adversarial, MD5 masih oke.


Apa yang sebenarnya dilakukan fungsi hash

Apa yang sebenarnya dilakukan fungsi hash di panduan MD5 vs SHA-256: mengubah input apa pun menjadi sidik jari panjang tetap - byte sama selalu menghasilkan digest sama, satu bit mengubah keluaran.

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

Perbandingan berdampingan pada MD5 vs SHA-256: MD5 128-bit dan sudah rusak oleh collision; SHA-256 256-bit dan masih default untuk integritas serta tanda tangan di 2026.

See MD5 at a glance: 128-bit digest, designed 1991 by Ron Rivest, MD4 lineage, and known collision resistance breaks.
MD5 at a glance: four key properties before you decide whether to use it or SHA-256.
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

Mengapa MD5 rusak dan apa artinya sebenarnya: penyerang dapat membuat dua file berbeda dengan MD5 sama, jadi MD5 saja tidak membuktikan unduhan tidak diubah.

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

Kapan MD5 masih baik-baik saja di panduan MD5 vs SHA-256: checksum non-keamanan cepat, manifes legacy, atau mendeteksi korupsi tidak sengaja saat tidak ada penyerang.

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

Kapan SHA-256 adalah pilihan yang tepat: hash rilis, rantai sertifikat, objek Git, dan setiap kasus di mana pihak ketiga bisa memalsukan MD5 yang bertabrakan.

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)

Apa yang digunakan untuk kata sandi (spoiler: tidak ada) adalah hash kata sandi lambat seperti Argon2 atau bcrypt - baik MD5 maupun SHA-256 telanjang dari string kata sandi bukan penyimpanan yang diterima.


Realitas kinerja di 2026

Realitas kinerja di 2026 untuk MD5 vs SHA-256: keduanya menyelesaikan file besar di browser dalam detik - pilih SHA-256 untuk kepercayaan, bukan karena MD5 jauh lebih cepat untuk unggahan biasa.

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