الاسم الكامل لـ MD5 هو خوارزمية ملخص الرسائل 5. يشير ملخص الرسائل عمومًا إلى تحويل التجزئة لسلسلة بايت (رسالة)، وهو تحويل سلسلة بايت من أي طول إلى عدد صحيح كبير بطول معين. يقوم MD5 بتحويل "سلسلة بايت" من أي طول إلى عدد صحيح كبير يبلغ 128 بت، وهي خوارزمية تحويل سلسلة لا رجعة فيها. بمعنى آخر، حتى لو رأيت البرنامج المصدر ووصف الخوارزمية، فلن تتمكن من تحويل قيمة MD5 تم تحويلها مرة أخرى إلى السلسلة الأصلية، من الناحية الرياضية، نظرًا لوجود عدد لا نهائي من السلاسل الأصلية، وهو ما يشبه إلى حد ما دالة رياضية ليس لها دالة عكسية.
انسخ رمز الكود كما يلي:
import java.security.MessageDigest;
الطبقة العامة Test_MD5 {
السلسلة الثابتة العامة النهائية MD5(String s) {
char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a'، 'b'، 'c'، 'd'، 'e'، 'f' };
يحاول {
byte[]strTemp=s.getBytes();
// أنشئ كائن messageDigest باستخدام MD5
messageDigestmdTemp=MessageDigest.getInstance("MD5");
mdTemp.update(strTemp);
byte[]md=mdTemp.digest();
intj=md.length;
charstr[]=newchar[j*2];
intk=0;
ل(inti=0;i<j;i++){
byteb=md[i];
//System.out.println((int)b);
// تشفير الرقم (int)b بالبايت المزدوج
str[k++]=hexDigits[b>>4&0xf];
str[k++]=hexDigits[b&0xf];
}
returnnewString(str);
}قبض(استثناء){returnnull;}
}
//امتحان
publicstaticvoidmain(String[]args){
System.out.println("تشفير MD5 لـ caidao:/n"+Test_MD5.MD5("caidao"));
System.out.println("//www.VeVB.COm/ بعد تشفير MD5:/n"+Test_MD5.MD5("//www.VeVB.COm/"));
}
}
أحد التطبيقات النموذجية لـ MD5 هو إنشاء بصمة على رسالة (سلسلة بايت) لمنع "التلاعب بها". على سبيل المثال، تكتب فقرة في ملف يسمى readme.txt، وتولد قيمة MD5 لهذا الملف readme.txt وتسجله، ثم يمكنك نشر هذا الملف للآخرين إذا قام الآخرون بتعديل الملف بأي محتوى، فستجده عند إعادة حساب MD5 لهذا الملف. إذا كانت هناك وكالة تصديق تابعة لجهة خارجية، فإن استخدام MD5 يمكن أن يمنع أيضًا "التنصل" من مؤلف الملف. وهذا ما يسمى بتطبيق التشفير الرقمي.
يستخدم MD5 أيضًا على نطاق واسع في تقنية التشفير وفك التشفير. في العديد من أنظمة التشغيل، يتم تخزين كلمة مرور المستخدم في شكل قيمة MD5 (أو خوارزميات أخرى مماثلة). عندما يقوم المستخدم بتسجيل الدخول، يقوم النظام بحساب كلمة المرور التي أدخلها المستخدم ثم تتم مقارنة قيمة MD5 بقيمة MD5 المحفوظة في النظام، ولا "يعرف" النظام ما هي كلمة المرور الخاصة بالمستخدم.
من الناحية النظرية، يعد MD5 عبارة عن تجزئة أحادية الاتجاه، ويستخدم بعض المتسللين طريقة تسمى "تشغيل القاموس" لكسر كلمة المرور هذه. هناك طريقتان للحصول على القاموس. إحداهما عبارة عن مجموعة يومية من جداول السلاسل المستخدمة ككلمات مرور، والأخرى يتم إنشاؤها باستخدام طريقة التقليب والجمع. أولاً، استخدم برنامج MD5 لحساب قيم MD5 لعناصر القاموس هذه ، ثم استخدم قيم MD5 للهدف للبحث في هذا القاموس.
حتى لو افترض أن الحد الأقصى لطول كلمة المرور هو 8، ويمكن أن تكون كلمة المرور عبارة عن أحرف وأرقام فقط، بإجمالي 26+26+10=62 حرفًا، فإن عدد العناصر في القاموس المتكون بواسطة التقليب هو P (62,1)+P(62, 2)....+P(62,8)، وهو رقم فلكي بالفعل. يتطلب تخزين هذا القاموس مجموعة أقراص على مستوى السل، وهذه الطريقة لها أيضًا شرط أساسي. وهو الحصول على الحساب المستهدف، وهذا ممكن فقط إذا كانت كلمة المرور لها قيمة MD5.