MD5 Hash Generator
Hasilkan hash MD5 dari teks apa pun
Teks Input
Hash MD5
Hash MD5 akan ditampilkan di sini…
Apa Itu Hashing MD5?
MD5 (Message-Digest Algorithm 5) adalah fungsi hash kriptografis yang menghasilkan digest tetap 128-bit (16 byte) dari input apa pun, terlepas dari ukurannya. Diterbitkan pada 1992 oleh Ronald Rivest sebagai RFC 1321, MD5 dirancang sebagai penerus yang lebih cepat dari MD4 dan dengan cepat menjadi salah satu fungsi hash yang paling banyak digunakan di internet. Algoritma ini memproses input dalam blok 512-bit melalui empat putaran yang masing-masing terdiri dari 16 operasi, menggunakan fungsi nonlinier yang berbeda per putaran, untuk menghasilkan sidik jari heksadesimal 32 karakter.
Fungsi hash adalah transformasi satu arah: dengan input yang diberikan, Anda dapat menghitung hash secara instan, tetapi hanya dengan hash saja, Anda tidak dapat memulihkan input aslinya. Bahkan perubahan satu bit pada input menghasilkan digest yang sama sekali berbeda — properti yang disebut efek avalanche. MD5 memetakan ruang input tak terbatas ke ruang output tetap 128-bit, sehingga tabrakan (dua input berbeda yang menghasilkan hash yang sama) secara matematis pasti ada, tetapi fungsi hash yang aman membuat penemuannya tidak memungkinkan secara komputasi.
Sejak 2004, para peneliti telah mendemonstrasikan serangan tabrakan praktis terhadap MD5, yang berarti algoritma ini tidak lagi dianggap aman untuk tanda tangan digital, sertifikat, atau konteks apa pun yang memerlukan ketahanan tabrakan. Namun, MD5 tetap banyak digunakan untuk tujuan non-keamanan: memverifikasi integritas berkas setelah pengunduhan, menghasilkan kunci cache, mendeduplikasi konten, dan membuat pengenal deterministik dari string. Untuk aplikasi ini, kecepatan algoritma dan dukungan pustaka yang luas menjadikannya pilihan praktis. Pada 2008, Marc Stevens dan kolega menerbitkan serangan tabrakan chosen-prefix, yang berarti penyerang dapat membuat dua dokumen dengan awalan yang dipilih secara bebas yang memiliki digest yang sama. Teknik ini didemonstrasikan di Chaos Communication Congress 2008 dengan membuat sertifikat Certification Authority palsu. Malware Flame pada 2012 kemudian mengeksploitasi tabrakan chosen-prefix untuk memalsukan sertifikat penandatanganan kode Microsoft, memungkinkan malware menyamar sebagai paket Windows Update yang sah. Eksploitasi nyata ini mengonfirmasi bahwa algoritma ini telah rusak secara kriptografis untuk penggunaan berbasis kepercayaan dan tidak boleh diandalkan ketika musuh dapat memengaruhi input yang di-hash.
Mengapa Menggunakan Generator MD5 Ini?
Hasilkan hash MD5 secara instan tanpa menginstal apa pun atau menulis kode. Tempelkan teks Anda dan dapatkan digest hex 32 karakter secara real time.
Kasus Penggunaan MD5
MD5 vs Algoritma Hash Lainnya
MD5 adalah yang tercepat dan terpendek di antara algoritma hash umum, tetapi menawarkan jaminan keamanan paling lemah. Tabel di bawah membandingkan ukuran digest, standar, dan kasus penggunaan yang tepat untuk setiap algoritma.
| Algoritma | Ukuran Digest | Panjang Hex | Standar | Terbaik Untuk |
|---|---|---|---|---|
| MD5 | 128 bits | 32 hex chars | 1992 / RFC 1321 | Checksums, non-security fingerprints |
| SHA-1 | 160 bits | 40 hex chars | 1995 / RFC 3174 | Legacy git commits (being replaced) |
| SHA-256 | 256 bits | 64 hex chars | 2001 / FIPS 180-4 | TLS certificates, blockchain, JWTs |
| SHA-384 | 384 bits | 96 hex chars | 2001 / FIPS 180-4 | Government systems, higher security margin |
| SHA-512 | 512 bits | 128 hex chars | 2001 / FIPS 180-4 | Digital signatures, HMAC with large keys |
| SHA-3 | 256 bits | 64 hex chars | 2015 / FIPS 202 | Post-quantum readiness, backup standard |
| BLAKE3 | 256 bits | 64 hex chars | 2020 | High-performance checksums, Merkle trees |
Cara Kerja MD5
MD5 memproses input melalui konstruksi Merkle-Damgard: pesan diisi ke kelipatan 512 bit, dibagi menjadi blok-blok, dan setiap blok diproses melalui empat putaran yang masing-masing terdiri dari 16 operasi bitwise yang mencampur input dengan konstanta turunan sinus yang telah dihitung sebelumnya. Hasilnya adalah status 128-bit yang menjadi digest akhir.
Setiap putaran menerapkan fungsi bantu nonlinier yang berbeda pada tiga dari empat kata status 32-bit (A, B, C, D). Putaran 1 menggunakan F(B,C,D) = (B AND C) OR (NOT B AND D) — pemilih kondisional bitwise. Putaran 2 menggunakan G(B,C,D) = (B AND D) OR (C AND NOT D) — pemilih komplementer. Putaran 3 menggunakan H(B,C,D) = B XOR C XOR D — fungsi paritas. Putaran 4 menggunakan I(B,C,D) = C XOR (B OR NOT D) — penggabung asimetris. Keempat fungsi ini memastikan setiap bit input memengaruhi digest output, menghasilkan efek avalanche yang membuat perubahan kecil pada input menyebabkan perubahan besar dan tidak dapat diprediksi pada hash yang dihasilkan.
MD5: 5eb63bbbe01eeed093cb22bb8f5acdc3
(128 bits = 16 bytes = 32 hex characters)
Algoritma berjalan dalam lima tahap: (1) tambahkan bit 1, lalu nol, hingga panjang pesan adalah 448 mod 512; (2) tambahkan panjang pesan asli sebagai bilangan bulat 64-bit little-endian; (3) inisialisasi empat variabel status 32-bit (A, B, C, D) dengan konstanta tetap; (4) proses setiap blok 512-bit melalui 64 operasi menggunakan empat fungsi nonlinier (F, G, H, I), satu per putaran dari 16 operasi; (5) tambahkan status yang dihasilkan ke total berjalan dan keluarkan hash 128-bit akhir dalam urutan byte little-endian.
Contoh Kode
Cara menghasilkan hash MD5 dalam bahasa dan lingkungan yang populer. Perhatikan bahwa MD5 tidak tersedia di Web Crypto API browser — gunakan pustaka atau Node.js.
// MD5 is not available in Web Crypto API (it only supports SHA-*)
// Use a library like 'js-md5' or the Node.js crypto module
// Node.js (built-in crypto)
const crypto = require('crypto')
const hash = crypto.createHash('md5').update('hello world').digest('hex')
console.log(hash) // → "5eb63bbbe01eeed093cb22bb8f5acdc3"
// With Unicode input
crypto.createHash('md5').update('cafe\u0301').digest('hex')
// → "4fad076bae205e95bec9dacea498e2ab"import hashlib
# Basic MD5 hash
result = hashlib.md5(b'hello world').hexdigest()
print(result) # → "5eb63bbbe01eeed093cb22bb8f5acdc3"
# Hash a string (must encode to bytes first)
text = 'hello world'
hashlib.md5(text.encode('utf-8')).hexdigest()
# → "5eb63bbbe01eeed093cb22bb8f5acdc3"
# Hash a file
with open('file.bin', 'rb') as f:
md5 = hashlib.md5()
for chunk in iter(lambda: f.read(8192), b''):
md5.update(chunk)
print(md5.hexdigest())package main
import (
"crypto/md5"
"fmt"
)
func main() {
data := []byte("hello world")
hash := md5.Sum(data)
fmt.Printf("%x\n", hash)
// → 5eb63bbbe01eeed093cb22bb8f5acdc3
}# Using md5sum (Linux) or md5 (macOS) echo -n "hello world" | md5sum # → 5eb63bbbe01eeed093cb22bb8f5acdc3 - # macOS echo -n "hello world" | md5 # → 5eb63bbbe01eeed093cb22bb8f5acdc3 # Hash a file md5sum package.json # → a1b2c3d4e5f6... package.json # Using openssl (cross-platform) echo -n "hello world" | openssl md5 # → MD5(stdin)= 5eb63bbbe01eeed093cb22bb8f5acdc3