Saat mengunduh berkas instalasi berukuran ratusan megabita, Anda mungkin pernah melihat deretan 32 karakter acak tercantum di samping tautan unduhannya. Deretan itu bukan nomor versi dan bukan kode rilis. Fungsinya sederhana: memastikan berkas yang sampai di komputer Anda persis sama dengan yang dikirim server. Salah satu algoritma yang paling sering menghasilkan deretan tersebut adalah MD5.
MD5 adalah algoritma peringkas data berusia lebih dari tiga dekade yang sampai hari ini masih terpasang di banyak tempat. Deretan 32 karakter yang sama juga tersimpan di kolom database sebagian aplikasi lama, menggantikan password penggunanya. Dua pekerjaan itu terlihat mirip, padahal tuntutan keamanannya jauh berbeda — dan MD5 hanya masih memenuhi salah satunya.
MD5 Adalah Sidik Jari Digital, Bukan Enkripsi
MD5 adalah singkatan dari Message-Digest Algorithm 5, sebuah fungsi hash kriptografis (fungsi yang meringkas data menjadi nilai berukuran tetap). Masukannya boleh berupa apa saja: satu huruf, satu kalimat, atau berkas video 50 GB. Keluarannya selalu sama panjang, yaitu 128 bit, yang lazim ditulis sebagai 32 karakter heksadesimal.
Ringkasan inilah yang disebut hash atau message digest. Sifatnya seperti sidik jari: ia mewakili sebuah data secara ringkas, tetapi tidak menyimpan isinya. Anda tidak bisa merekonstruksi orangnya dari sidik jari, dan tidak bisa merekonstruksi berkas dari hash MD5-nya.
Di sinilah letak kesalahpahaman yang paling sering muncul. MD5 kerap disebut "enkripsi MD5", padahal keduanya berbeda secara mendasar. Enkripsi selalu punya kunci dan dirancang untuk dibalik, karena data yang dienkripsi memang dimaksudkan dibuka kembali oleh pemegang kunci. MD5 tidak punya kunci sama sekali, dan tidak ada operasi kebalikannya.
Karena itu layanan yang mengiklankan diri bisa "mendekripsi MD5" tidak melakukan dekripsi apa pun. Yang mereka kerjakan adalah mencari di daftar jawaban. Miliaran kata dan frasa sudah dihitung MD5-nya lebih dulu, lalu hash yang Anda masukkan dicocokkan dengan daftar itu. Bila berasal dari kata umum, jawabannya ketemu seketika. Bila tidak ada di daftar, layanan itu tidak bisa berbuat apa-apa.
Cara Kerja MD5: Dari Masukan Apa Pun ke 32 Karakter
MD5 dirancang Ronald Rivest dan diterbitkan sebagai RFC 1321 pada April 1992, sebagai penerus MD4 yang dinilai terlalu mengejar kecepatan. Dokumen aslinya menyebut MD5 sedikit lebih lambat dari MD4, namun lebih konservatif dalam rancangan.
Proses peringkasannya berjalan bertahap. Masukan lebih dulu diberi bit pengganjal (padding) sampai panjangnya pas menjadi kelipatan 512 bit. Data yang sudah rapi dipecah menjadi blok-blok 512 bit. Setiap blok kemudian melewati 64 operasi yang terus memperbarui empat variabel berantai berukuran 32 bit. Setelah blok terakhir selesai, isi keempat variabel itu digabung menjadi hasil akhir 128 bit.
Diagram alur pemrosesan MD5 dari masukan bebas, pengganjal, blok 512 bit, hingga keluaran 128 bit.
Rangkaian operasi ini menghasilkan sifat yang disebut efek longsoran (avalanche effect): perubahan sekecil apa pun pada masukan mengubah keluaran secara menyeluruh. Perhatikan dua contoh berikut, yang hanya berbeda pada huruf pertamanya.
MD5("password") = 5f4dcc3b5aa765d61d8327deb882cf99
MD5("Password") = dc647eb65e6711e155375218212b3964Tidak ada satu pun karakter yang bertahan di posisi yang sama. Sifat inilah yang membuat hash berguna untuk mendeteksi perubahan: satu bit yang rusak di tengah berkas 4 GB sudah cukup mengubah seluruh ringkasannya.
MD5 adalah salah satu wujud paling nyata dari algoritma — urutan langkah yang pasti, yang selalu memberi hasil sama untuk masukan sama. Menjalankan MD5 pada berkas yang identik di komputer mana pun, kapan pun, akan menghasilkan 32 karakter yang persis serupa.
Di Mana Anda Menemui MD5 Sehari-hari
Meski usianya tua, MD5 masih beredar luas. Ada empat tempat yang paling sering Anda jumpai.
- Verifikasi berkas unduhan: Penyedia perangkat lunak mencantumkan checksum MD5 di halaman rilis, dan Anda membandingkannya setelah berkas selesai diunduh.
- Penyimpanan password aplikasi lama: Sistem era 2000-an banyak menyimpan hash MD5 di kolom database, bukan password aslinya. Sebagian masih berjalan sampai sekarang.
- Deduplikasi penyimpanan: Sistem backup dan penyimpanan awan menghitung MD5 tiap potongan data untuk mengenali bagian yang isinya sama.
- Kunci cache dan identifikasi internal: MD5 memampatkan string panjang — misalnya URL beserta parameternya — menjadi kunci pendek yang seragam.
Keempatnya memakai algoritma yang sama persis, tetapi menuntut jaminan yang berbeda. Perbedaan tuntutan inilah yang menentukan mana yang masih boleh dan mana yang harus ditinggalkan.
Dua Janji MD5 pada 1992, dan Hanya Satu yang Bertahan
RFC 1321 tidak sekadar menjelaskan cara kerja MD5. Dokumen itu juga menyatakan dua dugaan keamanan yang berbeda, dan perbedaan keduanya adalah kunci untuk memahami posisi MD5 hari ini.
Dugaan pertama: menemukan dua masukan berbeda yang menghasilkan hash sama membutuhkan sekitar 2^64 operasi. Sifat ini disebut ketahanan tabrakan (collision resistance). Analoginya, mencari dua orang di dunia yang sidik jarinya kebetulan identik.
Dugaan kedua: menemukan masukan yang menghasilkan sebuah hash tertentu membutuhkan sekitar 2^128 operasi. Sifat ini disebut ketahanan pra-citra (preimage resistance). Analoginya, diberi satu sidik jari lalu diminta mencari orang pemiliknya.
Kedua janji itu bernasib sangat berbeda. Ketahanan tabrakan runtuh sepenuhnya — hari ini tabrakan MD5 bisa dibuat dalam hitungan detik di laptop biasa. Ketahanan pra-citra justru masih bertahan. Serangan pra-citra terbaik yang pernah dipublikasikan, oleh Sasaki dan Aoki pada EUROCRYPT 2009, berkompleksitas 2^123,4. Angka itu hanya sekitar 24 kali lebih baik daripada menebak satu per satu sampai 2^128. Secara praktis ia tetap di luar jangkauan komputasi mana pun yang ada sekarang.
Diagram perbandingan ketahanan MD5: ketahanan tabrakan dan ketahanan pra-citra.
Asimetri inilah yang menjelaskan situasi yang tampak membingungkan. MD5 sudah dilarang keras untuk tanda tangan digital, tetapi md5sum masih dipakai memverifikasi unduhan di banyak proyek besar. Keduanya konsisten, karena bersandar pada sifat yang berbeda.
Bagaimana Janji Pertama Runtuh
Keruntuhan ketahanan tabrakan berlangsung bertahap selama delapan tahun, dengan beberapa titik penting.
Agustus 2004. Xiaoyun Wang dan rekan-rekannya mengumumkan tabrakan MD5 pertama di sesi informal konferensi CRYPTO. Saat itu komputasinya masih memakan waktu sekitar satu jam di mesin multiprosesor.
2006. Marc Stevens merilis fastcoll, program pembangkit tabrakan yang menurunkan kebutuhan waktu menjadi hitungan detik di komputer biasa. Tabrakan MD5 berhenti menjadi pencapaian riset dan berubah menjadi sesuatu yang bisa dijalankan siapa saja.
30 Desember 2008. Tim gabungan tujuh peneliti memperagakan serangan yang benar-benar berbahaya: membuat sertifikat otoritas sertifikat (Certificate Authority) palsu yang dipercaya seluruh browser utama. Mereka memakai lebih dari 200 konsol PlayStation 3 di laboratorium EPFL Lausanne. Total kompleksitasnya 2^51, sekitar 8.192 kali lebih murah dibanding 2^64 yang diduga pada 1992. Biaya sertifikat uji yang mereka beli hanya USD 657.
31 Desember 2008. CERT/CC menerbitkan peringatan resmi VU#836068. Kesimpulannya tidak menyisakan ruang tafsir: MD5 harus dianggap rusak secara kriptografis dan tidak layak dipakai lagi.
Juni 2012. Malware Flame memakai varian baru serangan tabrakan untuk memalsukan sertifikat penandatanganan kode Microsoft. Layanan lisensi yang masih memakai MD5 dimanfaatkan, sehingga komponen malware tampak berasal dari Microsoft sendiri dan lolos ke mesin korban lewat jalur pembaruan.
Posisi resmi menyusul kemudian. RFC 6151 pada Maret 2011 menyatakan MD5 tidak lagi dapat diterima untuk keperluan yang menuntut ketahanan tabrakan, termasuk tanda tangan digital. NIST juga tidak memasukkan MD5 ke daftar algoritma hash yang disetujui. Karena itu sertifikat SSL yang diterbitkan hari ini seluruhnya memakai SHA-256, dan tidak ada lagi otoritas sertifikat yang menandatangani dengan MD5.
Membuktikan Sendiri: Dua Berkas dengan Hash yang Sama
Tabrakan MD5 lebih mudah dipahami bila Anda melihatnya langsung. Pasangan data berikut berasal dari penelitian Wang dan rekan-rekannya. Keduanya berukuran 128 byte dan berbeda tepat di 6 byte, namun menghasilkan MD5 yang identik.
import hashlib
pesan1 = bytes.fromhex(
"d131dd02c5e6eec4693d9a0698aff95c2fcab58712467eab4004583eb8fb7f89"
"55ad340609f4b30283e488832571415a085125e8f7cdc99fd91dbdf280373c5b"
"d8823e3156348f5bae6dacd436c919c6dd53e2b487da03fd02396306d248cda0"
"e99f33420f577ee8ce54b67080a80d1ec69821bcb6a8839396f9652b6ff72a70")
pesan2 = bytes.fromhex(
"d131dd02c5e6eec4693d9a0698aff95c2fcab50712467eab4004583eb8fb7f89"
"55ad340609f4b30283e4888325f1415a085125e8f7cdc99fd91dbd7280373c5b"
"d8823e3156348f5bae6dacd436c919c6dd53e23487da03fd02396306d248cda0"
"e99f33420f577ee8ce54b67080280d1ec69821bcb6a8839396f965ab6ff72a70")
print(pesan1 == pesan2) # False
print(hashlib.md5(pesan1).hexdigest()) # 79054025255fb1a26e4bc422aef54eb4
print(hashlib.md5(pesan2).hexdigest()) # 79054025255fb1a26e4bc422aef54eb4
print(hashlib.sha256(pesan1).hexdigest()[:16]) # 8d12236e5c4ed9f4
print(hashlib.sha256(pesan2).hexdigest()[:16]) # b9fef2a8fc93b05eDua data yang jelas berbeda, satu hash MD5 yang sama. SHA-256 pada data itu tetap membedakan keduanya tanpa kesulitan.
Implikasinya penting dan sering luput. Checksum MD5 yang cocok tidak membuktikan dua berkas identik — ia hanya membuktikan keduanya menghasilkan ringkasan yang sama. Selama tidak ada yang sengaja menyusun berkasnya, kedua hal itu praktis setara. Begitu ada pihak yang bisa menyiapkan isi berkas sejak awal, keduanya berhenti setara.
Kenapa MD5 Tidak Boleh Menyimpan Password
Untuk password, sifat yang bermasalah bukan tabrakan, melainkan kecepatan. MD5 dirancang pada 1992 agar berjalan secepat mungkin — dan justru itu yang membuatnya berbahaya di tangan penyerang yang memegang salinan tabel pengguna.
Angka berikut berasal dari benchmark hashcat pada satu kartu grafis NVIDIA RTX 5090, berikut waktu yang dibutuhkan untuk menyisir seluruh kemungkinan password 8 karakter.
| Algoritma | Kecepatan | Password 8 karakter (huruf kecil + angka) | Password 8 karakter (huruf besar-kecil + angka) |
|---|---|---|---|
| MD5 | 220,6 miliar hash/detik | 12,8 detik | 16,5 menit |
| SHA-256 | 28,4 miliar hash/detik | 1,7 menit | 2,1 jam |
| bcrypt (work factor 5) | 304,8 ribu hash/detik | 107 hari | 23 tahun |
Selisih antara MD5 dan bcrypt di kartu grafis yang sama mencapai sekitar 723 ribu kali. Itu bukan perbedaan optimasi, melainkan perbedaan tujuan rancangan: bcrypt sengaja dibuat lambat dan boros memori supaya menyisir seluruh kemungkinan menjadi tidak masuk akal secara ekonomi.
Angka bcrypt di tabel itu bahkan masih terlalu murah hati. Work factor 5 adalah nilai bawaan saat mengukur perangkat keras, sedangkan yang disarankan untuk sistem sungguhan minimal 10. Setiap kenaikan satu tingkat melipatduakan beban kerja, sehingga work factor 10 berjalan 32 kali lebih lambat lagi. Password 8 karakter huruf besar-kecil dan angka pun berpindah dari 23 tahun menjadi sekitar 726 tahun.
Diagram batang membandingkan waktu membobol password 8 karakter pada MD5, SHA-256, dan bcrypt.
Persoalan berikutnya adalah hash tanpa salt (data acak unik yang ditambahkan ke tiap password sebelum di-hash). Tanpa salt, password yang sama selalu menghasilkan hash yang sama untuk semua pengguna. Nilai 5f4dcc3b5aa765d61d8327deb882cf99 pada contoh sebelumnya adalah hash dari kata "password", dan menempelkannya ke mesin pencari langsung memberi jawabannya. Penyerang yang mendapat tabel berisi sejuta hash MD5 tanpa salt tidak perlu menyerang satu per satu. Ia mencocokkan seluruh tabel sekaligus dengan daftar yang sudah dihitung sebelumnya.
Menambahkan salt memang menutup celah itu dan memaksa penyerang bekerja per akun. Namun bekerja per akun dengan kecepatan 220 miliar percobaan per detik masih terlalu murah. Salt memperbaiki cara pemakaian MD5, bukan memperbaiki MD5 itu sendiri.
Dua tempat yang paling sering ditemui dalam praktik adalah fungsi md5() di PHP dan fungsi MD5() di MySQL. Manual resmi PHP sendiri sudah lama mencantumkan peringatan agar fungsi tersebut tidak dipakai mengamankan password, tepat karena algoritmanya terlalu cepat, dan mengarahkan pembaca ke password_hash().
Perlu ditegaskan, hash password baru menjadi masalah setelah tabelnya bocor — biasanya lewat SQL injection atau kredensial database yang jatuh ke tangan salah. Hash yang kuat adalah lapisan terakhir. Ia tidak mencegah kebocoran, tetapi menentukan seberapa besar kerugiannya.
Kewajiban di Indonesia yang Tenggatnya Sudah Lewat
Bagi pengelola sistem di Indonesia, pilihan algoritma penyimpanan password bukan lagi semata urusan teknis. Undang-Undang Nomor 27 Tahun 2022 tentang Pelindungan Data Pribadi diundangkan pada 17 Oktober 2022 dan mengatur hal ini secara langsung.
Pasal 35 mewajibkan pengendali data pribadi menyusun dan menerapkan langkah teknis operasional untuk melindungi data yang diprosesnya. Tingkat keamanannya ditentukan dengan memperhatikan sifat dan risiko data itu. Pasal 39 ayat (1) mewajibkan pencegahan akses tidak sah, dan ayat (2) menyebut pencegahan itu dilakukan lewat sistem yang andal, aman, dan bertanggung jawab. Menurut Pasal 57, pelanggaran keduanya dikenai sanksi administratif.
Bila kebocoran benar-benar terjadi, Pasal 46 mewajibkan pemberitahuan tertulis kepada subjek data dan lembaga pengawas paling lambat 3 × 24 jam. Pada titik itu, yang ditanyakan bukan hanya bagaimana data bisa keluar, melainkan juga seberapa terlindungi data tersebut sebelum keluar.
Pasal 74 memberi masa penyesuaian dua tahun sejak undang-undang diundangkan. Masa itu berakhir pada 17 Oktober 2024, dan kini sudah lewat lebih dari satu setengah tahun. Sistem yang masih menyimpan password sebagai MD5 telanjang berada di posisi yang sulit dipertahankan, baik secara teknis maupun kepatuhan.
Kapan MD5 Masih Boleh Dipakai
Dari seluruh uraian di atas, keputusan pemakaian MD5 sebenarnya bisa diringkas menjadi satu pertanyaan: adakah pihak yang bisa memilih masukannya?
Bila jawabannya tidak, MD5 masih mengerjakan tugasnya dengan baik:
- Mendeteksi berkas yang rusak saat pemindahan: Koneksi yang putus atau media penyimpanan yang bermasalah merusak data secara acak, bukan terencana. MD5 menangkapnya dengan andal.
- Kunci cache: Meringkas URL panjang menjadi kunci pendek. Tabrakan yang sangat jarang terjadi paling banter membuat satu entri cache meleset.
- Sidik jari deduplikasi: Mengenali potongan data yang isinya sama pada sistem penyimpanan internal.
- ETag dan penanda versi: Menandai apakah sebuah sumber daya berubah sejak permintaan terakhir.
Bila jawabannya ya, MD5 tidak melindungi apa pun. Password, tanda tangan digital, sertifikat, dan verifikasi berkas dari sumber yang tidak Anda kenali masuk kategori ini. Pada semua kasus itu ada pihak yang berkepentingan menyiapkan dua data berbeda dengan hash sama, dan sejak 2008 ia bisa melakukannya dengan biaya terjangkau.
Diagram dua kolom membandingkan pemakaian MD5 yang masih aman dan yang tidak aman.
Satu contoh sering membingungkan, jadi patut diperjelas. Checksum MD5 di halaman unduhan resmi masih berguna melawan unduhan yang korup di tengah jalan. Checksum yang sama tidak berguna melawan penyerang yang sudah menguasai server unduhan itu, karena ia bisa mengganti berkas sekaligus checksum yang dipajang. Untuk ancaman semacam itu yang dibutuhkan tanda tangan digital, bukan checksum.
Cara Menghitung MD5 di Linux, macOS, dan Windows
Setiap sistem operasi menyediakan caranya sendiri. Semua perintah berikut sudah diuji dan keluarannya ditulis apa adanya.
Di Linux, perintahnya md5sum. Perhatikan ada dua spasi antara hash dan nama berkas.
md5sum uji.txt2ecb79da422c5ce5de01343f31c4d36e uji.txtDi macOS, perintahnya md5 tanpa akhiran sum, dan format keluarannya berbeda.
md5 uji.txtMD5 (uji.txt) = 2ecb79da422c5ce5de01343f31c4d36eBila Anda berpindah-pindah sistem, openssl tersedia di ketiga platform dan memberi keluaran yang seragam.
openssl dgst -md5 uji.txtMD5(uji.txt)= 2ecb79da422c5ce5de01343f31c4d36eDi Windows, tanpa perlu memasang apa pun, gunakan certutil lewat Command Prompt atau PowerShell.
certutil -hashfile uji.txt MD5Dari dalam kode, hampir semua bahasa menyediakannya di pustaka bawaan. Di Node.js maupun JavaScript sisi server, satu baris sudah cukup.
require('crypto').createHash('md5').update('abc').digest('hex')'900150983cd24fb0d6963f7d28e17f72'Untuk menghitung MD5 dari teks langsung di terminal, gunakan printf, bukan echo.
printf '%s' 'abc' | md5sum900150983cd24fb0d6963f7d28e17f72 -Nilai di atas adalah salah satu vektor uji resmi di RFC 1321, jadi bisa Anda pakai memastikan perintahnya sudah benar. Jangan memakai
echountuk keperluan ini:echomenambahkan karakter baris baru di akhir, sehingga yang di-hash sebenarnyaabcbeserta tambahan tersebut dan hasilnya berbeda. Kesalahan kecil ini sering membuat orang mengira checksum-nya tidak cocok.
Mengganti MD5 Sesuai Tujuannya
Penggantian MD5 sering gagal karena dua kebutuhan yang berbeda diperlakukan sebagai satu. Pisahkan lebih dulu, baru pilih algoritmanya.
Untuk memeriksa keutuhan berkas, gantilah dengan SHA-256: sha256sum di Linux, shasum -a 256 di macOS, dan certutil -hashfile berkas SHA256 di Windows. Bila kecepatan menjadi hambatan pada data berukuran sangat besar, BLAKE3 jauh lebih cepat sekaligus tetap aman.
MD5 vs SHA-1 vs SHA-256: Perbandingan Singkat
Tiga algoritma ini sering disebut bersamaan, padahal posisinya berbeda jauh.
| MD5 | SHA-1 | SHA-256 | |
|---|---|---|---|
| Terbit | 1992 (RFC 1321) | 1995 (FIPS 180-1) | 2002 (FIPS 180-2) |
| Panjang hash | 128 bit / 32 karakter | 160 bit / 40 karakter | 256 bit / 64 karakter |
| Kecepatan (RTX 5090) | 220,6 GH/s | 70,2 GH/s | 28,4 GH/s |
| Tabrakan pertama | 2004 | 2017 | belum ada |
| Dipakai untuk proyek baru? | hanya di luar keamanan | tidak | ya |
Jarak antara MD5 dan SHA-1 bukan sekadar soal tahun. Tabrakan SHA-1 pertama baru diperagakan 23 Februari 2017 oleh CWI Amsterdam bersama Google, lewat proyek bernama SHAttered yang menghasilkan dua berkas PDF dengan SHA-1 identik. Biayanya sekitar sembilan kuintiliun operasi, setara 6.500 tahun kerja CPU ditambah 110 tahun kerja GPU. Bandingkan dengan MD5, yang tabrakannya bisa dibuat dalam hitungan detik di laptop. SHA-1 memang sudah tertembus, tetapi masih jauh lebih mahal ditembus daripada MD5.
Meski begitu, SHA-1 bukan pilihan untuk sesuatu yang baru. NIST menetapkan penghentian pemakaiannya untuk seluruh aplikasi paling lambat 31 Desember 2030. Bila Anda sedang mengganti MD5, langsung lompat ke SHA-256 dan lewati SHA-1 sama sekali.
Untuk menyimpan password, SHA-256 bukan jawabannya. Ini titik yang paling sering keliru. SHA-256 memang tahan tabrakan, tetapi sama-sama dirancang cepat — tabel sebelumnya menunjukkan selisihnya dengan MD5 hanya sekitar delapan kali. Yang dibutuhkan justru algoritma yang sengaja lambat dan boros memori. Rekomendasi OWASP saat ini beserta parameternya:
- Argon2id — pilihan utama. Memori 19 MiB, 2 iterasi, paralelisme 1.
- scrypt — bila Argon2id belum tersedia. Parameter N = 2^17 (128 MiB), r = 8, p = 1.
- bcrypt — untuk sistem lama. Work factor minimal 10, masukan terpotong pada 72 byte.
- PBKDF2 — bila Anda terikat kepatuhan FIPS. 600.000 iterasi untuk varian HMAC-SHA256.
Di PHP, seluruh urusan ini ditangani password_hash() beserta password_verify(). Keduanya membangkitkan dan mengelola salt secara otomatis, sehingga Anda tidak perlu menyimpannya di kolom terpisah.
Migrasi tabel password lama tidak perlu memaksa seluruh pengguna melakukan reset. Pola yang lazim adalah menghitung ulang saat login berhasil. Verifikasi dulu dengan MD5 lama, dan begitu cocok, hitung ulang password itu dengan algoritma baru lalu timpa isi kolomnya. Tabel akan berpindah sendiri seiring pengguna kembali masuk. Untuk akun yang tidak aktif lagi setelah tenggat yang Anda tetapkan, hapus hash lamanya dan minta pemiliknya menyetel ulang password bila suatu saat kembali.
Selama masa migrasi, mengaktifkan autentikasi dua faktor memberi lapisan tambahan yang tetap bekerja meskipun hash lama sempat bocor.
Sisi Lain Meninggalkan MD5
Meninggalkan MD5 bukan pekerjaan yang gratis, dan menutupi biayanya justru membuat rencana migrasi mudah gagal di tengah jalan. Ada tiga hal yang perlu Anda perhitungkan.
Beban server naik. Argon2id dengan parameter yang disarankan memakan 19 MiB memori untuk setiap verifikasi. Pada layanan yang menerima lonjakan login bersamaan, seribu permintaan serentak berarti sekitar 19 GB memori terpakai di puncaknya. Ini beban nyata yang perlu diukur, bukan diasumsikan. Bila server Anda terbatas, turunkan paralelisme dan naikkan iterasi, atau pilih bcrypt work factor 10 yang jauh lebih hemat memori.
Skema database ikut berubah. Hash MD5 selalu 32 karakter, sehingga banyak tabel lama memakai kolom CHAR(32). Hash Argon2id dan bcrypt jauh lebih panjang serta berukuran tidak tetap. Kolom perlu diperlebar menjadi VARCHAR(255) sebelum baris pertama ditulis, dan perubahan itu menyentuh tabel yang biasanya paling ramai diakses.
Sebagian sistem memang tidak menyediakan pilihan. Perangkat jaringan lama, protokol warisan, dan integrasi dengan pihak ketiga kadang mengharuskan MD5. Bila itu keadaannya, batasi dampaknya. Pastikan MD5 tidak menjadi satu-satunya penentu keputusan keamanan, dan tambahkan lapisan verifikasi di luar sistem tersebut. Catat pula ketergantungan itu sebagai risiko yang diketahui, bukan dibiarkan tak terlihat sampai audit menemukannya.
Pertanyaan yang Sering Diajukan
MD5 digunakan untuk apa? Terutama untuk membuat ringkasan pendek dari data berukuran besar. Pemakaian yang masih layak hari ini adalah memeriksa keutuhan berkas unduhan, kunci cache, deduplikasi penyimpanan, dan penanda versi. Untuk keperluan keamanan, MD5 sudah digantikan algoritma lain.
Apa arti MD5 saat memasukkan password pada proses login? Artinya sistem tidak menyimpan password Anda, melainkan hash MD5-nya. Ketika Anda login, password yang diketik di-hash ulang lalu dibandingkan dengan yang tersimpan. Cara ini benar secara konsep, tetapi MD5 adalah pilihan algoritma yang sudah tidak memadai untuk tugas tersebut.
Mengapa SHA-256 lebih disarankan daripada MD5? Untuk memeriksa keutuhan berkas dan tanda tangan digital, SHA-256 memang jauh lebih baik karena ketahanan tabrakannya belum tertembus. Namun untuk menyimpan password, SHA-256 juga tidak disarankan — ia sama-sama dirancang cepat. Gunakan Argon2id, scrypt, atau bcrypt.
Mengapa MD5 dan SHA-1 dianggap tidak aman lagi? Karena ketahanan tabrakan keduanya sudah tertembus. Penyerang dapat menyusun dua data berbeda yang menghasilkan hash sama, lalu memakainya untuk memalsukan sertifikat atau dokumen bertanda tangan. Pada MD5 hal ini terbukti sejak 2004 dan diperagakan secara praktis pada 2008. SHA-1 menyusul pada 2017. Keduanya tidak setara: menembus SHA-1 masih menuntut biaya komputasi yang sangat besar, sedangkan MD5 sudah bisa ditembus di laptop.
Berapa panjang hash MD5, dan bisakah dibuat lebih pendek? Selalu 128 bit, ditulis sebagai 32 karakter heksadesimal, berapa pun besar masukannya. Panjang tersebut bagian dari rancangan dan tidak bisa diatur. Memotong sebagian karakter hanya memperbesar peluang tabrakan.
Bisakah hash MD5 dikembalikan menjadi teks aslinya? Tidak. MD5 membuang informasi saat meringkas, sehingga tidak ada jalan matematis untuk membalikkannya. Layanan yang mengaku bisa sebenarnya mencocokkan hash Anda dengan daftar jawaban yang sudah dihitung sebelumnya. Cara itu berhasil untuk kata umum dan gagal untuk data yang tidak ada di daftar.
Kesimpulan
MD5 adalah fungsi hash 128 bit yang masih andal untuk mendeteksi perubahan tanpa sengaja. Ia sudah tidak berarti apa-apa untuk menghadapi pihak yang sengaja mengubah data. Dua kesimpulan yang tampak bertentangan itu bersandar pada sifat yang berbeda: ketahanan tabrakannya runtuh sejak 2004, sementara ketahanan pra-citranya masih bertahan.
Karena itu keputusan pemakaiannya bisa dikembalikan ke satu pertanyaan — adakah pihak yang bisa memilih masukannya? Bila tidak ada, MD5 masih layak dipakai. Bila ada, gunakan SHA-256 untuk keutuhan berkas dan Argon2id untuk password, dan jangan menunda migrasinya.
Semoga artikel ini membantu.




