Nama lengkap MD5 adalah Algoritma Message-Digest 5. Message-Digest umumnya mengacu pada transformasi Hash dari string byte (Pesan), yaitu mengubah string byte dengan panjang berapa pun menjadi bilangan bulat besar dengan panjang tertentu. MD5 mengubah "string byte" dengan panjang berapa pun menjadi bilangan bulat besar 128-bit, dan ini adalah algoritme konversi string yang tidak dapat diubah, meskipun Anda melihat program sumber dan deskripsi algoritme, Anda tidak dapat mengonversi MD5 Nilainya adalah dikonversi kembali ke string asli, secara matematis, karena string asli jumlahnya tak terhingga, yang mirip dengan fungsi matematika yang tidak memiliki fungsi invers.
Copy kode kodenya sebagai berikut:
impor java.keamanan.MessageDigest;
kelas publik Test_MD5{
String statis akhir publik MD5(String s) {
char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f' };
mencoba {
byte[]strTemp=s.getBytes();
//Buat objek MessageDigest menggunakan MD5
MessageDigestmdTemp=MessageDigest.getInstance("MD5");
mdTemp.update(strTemp);
byte[]md=mdTemp.digest();
intj=md.panjang;
karakterstr[]=karakter baru[j*2];
tinta=0;
untuk(inti=0;i<j;i++){
byteb=md[i];
//Sistem.keluar.println((int)b);
//Enkripsi nomor (int) b dengan byte ganda
str[k++]=hexDigit[b>>4&0xf];
str[k++]=hexDigit[b&0xf];
}
returnnewString(str);
}catch(Pengecualian){returnnull;}
}
//tes
publicstaticvoidmain(String[]args){
System.out.println("enkripsi MD5 caidao:/n"+Test_MD5.MD5("caidao"));
System.out.println("//www.VeVB.COM/ setelah enkripsi MD5:/n"+Test_MD5.MD5("//www.VeVB.COM/"));
}
}
Penerapan umum MD5 adalah menghasilkan sidik jari pada Pesan (string byte) untuk mencegahnya "dirusak". Misalnya, Anda menulis paragraf dalam file bernama readme.txt, dan menghasilkan nilai MD5 untuk readme.txt ini dan mencatatnya. Kemudian Anda dapat menyebarkan file ini ke orang lain. Jika orang lain memodifikasi file tersebut Konten apa pun, Anda akan menemukannya ketika Anda menghitung ulang MD5 file ini. Jika ada lembaga sertifikasi pihak ketiga, penggunaan MD5 juga dapat mencegah "penolakan" pembuat file. Inilah yang disebut aplikasi enkripsi digital.
MD5 juga banyak digunakan dalam teknologi enkripsi dan dekripsi. Di banyak sistem operasi, kata sandi pengguna disimpan dalam bentuk nilai MD5 (atau algoritma serupa lainnya). Nilai MD5 kemudian dibandingkan dengan nilai MD5 yang disimpan dalam sistem, dan sistem tidak “mengetahui” apa kata sandi pengguna.
MD5 secara teoritis merupakan hash satu arah, dan beberapa peretas menggunakan metode yang disebut "kamus berjalan" untuk memecahkan kata sandi ini. Ada dua cara untuk mendapatkan kamus. Yang pertama adalah kumpulan tabel string harian yang digunakan sebagai kata sandi, dan yang lainnya dibuat menggunakan metode permutasi dan kombinasi. Pertama, gunakan program MD5 untuk menghitung nilai MD5 item kamus tersebut , lalu gunakan nilai MD5 target yang dicari di kamus ini.
Sekalipun diasumsikan panjang maksimum kata sandi adalah 8, dan kata sandi hanya boleh berupa huruf dan angka, total 26+26+10=62 karakter, jumlah entri dalam kamus yang dibuat oleh kombinasi tersebut adalah P (62,1)+P(62, 2)....+P(62,8), itu sudah merupakan angka astronomi. Menyimpan kamus ini memerlukan grup disk tingkat TB, dan metode ini juga memiliki prasyarat, yaitu untuk mendapatkan akun target. Ini hanya mungkin jika kata sandi memiliki nilai MD5.