MD5 = Message-Digest algortihm 5, adalah fungsi hash (prosedur terdefinisi atau fungsi matematika yang mengubah variabel dari suatu data yang berukuran besar menjadi lebih sederhana) kriptografik yang digunakan secara luas dengan hash value 128-bit.
Sebuah perkembangan dari hash,MD5 mengambil nilai hash dan mengubahnya kembali dengan bernilai 128-bit. Jadi Berapun Jumlah angka atau digitnya maka akan di konversi oleh MD5 menjadi 32 karakter acak, MD5 biasanya digunakan untuk keamanan komputer karena sistem pengamanan terhadap data secara satu arah (one way),sehingga nilai yang suda terenkripsi MD5 tidak mudah di kembalikan,para hacker menggunakan metode acak secara paksa,untuk mendapatkan nilai dari MD5 tersebut,karena perbedaan bit di tiap mesin komputer yang dijalankan membuat MD5 sangatlah bermanfaat.
Sekarang,banyak sekali aplikasi baik secara online maupun offline untuk menerjemahkan kembali nilai yang terenkripsi MD5 tersebut, salah satunya adalah ini .
untuk softwarenya , namanya Invisible MD5 Online Cracker anda bisa mendownload program tersebut di :
http://www.ziddu.com/download/14415826/longfieldinvi.rar.html
Nilai hash yang tersimpan dicoba diterjemahkan kembali menjadi kalimat sebelum dikenakan nilai dari algoritma MD5, hal ini akan memakan waktu banyak sekali,sehingga tak jarang akan sangat lama untuk menerjemahkannya.
algoritma MD5 adalah sebagai berikut :
//Catatan: Seluruh variable pada unsigned integer 32-bit dan dan wrap modulo 2^32 saat melakukan perhitungan
//Mendefinisikan r sebagai berikut
var int[64] r, k
r[ 0..15] := {7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22}
r[16..31] := {5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20}
r[32..47] := {4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23}
r[48..63] := {6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21}
//Menggunakan bagian fraksional biner dari integral sinus sebagai konstanta:
for i from 0 to 63
k[i] := floor(abs(sin(i + 1)) × 2^32)
//Inisialisasi variabel:
var int h0 := 0x67452301
var int h1 := 0xEFCDAB89
var int h2 := 0x98BADCFE
var int h3 := 0x10325476
//Pemrosesan awal:
append "1" bit to message
append "0" bits until message length in bits ≡ 448 (mod 512)
append bit length of message as 64-bit little-endian integer to message
//Pengolahan pesan paada kondisi gumpalan 512-bit:
for each 512-bit chunk of message
break chunk into sixteen 32-bit little-endian words w(i), 0 ≤ i ≤ 15
//Inisialisasi nilai hash pada gumpalan ini:
var int a := h0
var int b := h1
var int c := h2
var int d := h3
//Kalang utama:
for i from 0 to 63
if 0 ≤ i ≤ 15 then
f := (b and c) or ((not b) and d)
g := i
else if 16 ≤ i ≤ 31
f := (d and b) or ((not d) and c)
g := (5×i + 1) mod 16
else if 32 ≤ i ≤ 47
f := b xor c xor d
g := (3×i + 5) mod 16
else if 48 ≤ i ≤ 63
f := c xor (b or (not d))
g := (7×i) mod 16
temp := d
d := c
c := b
b := ((a + f + k(i) + w(g)) leftrotate r(i)) + b
a := temp
//Tambahkan hash dari gumpalan sebagai hasil:
h0 := h0 + a
h1 := h1 + b
h2 := h2 + c
h3 := h3 + d
var int digest := h0 append h1 append h2 append h3 //(diwujudkan dalam little-endian)
daftar pustaka : http://id.wikipedia.org/wiki/MD5#Algoritma








