ชื่อเต็มของ MD5 คือ Message-Digest Algorithm 5 โดยทั่วไป Message-Digest หมายถึงการแปลงแฮชของสตริงไบต์ (Message) ซึ่งก็คือการแปลงสตริงไบต์ที่มีความยาวเท่าใดก็ได้ให้เป็นจำนวนเต็มขนาดใหญ่ตามความยาวที่กำหนด MD5 แปลง "สตริงไบต์" ที่มีความยาวเท่าใดก็ได้ให้เป็นจำนวนเต็มขนาดใหญ่ 128 บิต และเป็นอัลกอริธึมการแปลงสตริงที่ย้อนกลับไม่ได้ แปลงกลับไปเป็นสตริงดั้งเดิม ในทางคณิตศาสตร์ เนื่องจากมีสตริงดั้งเดิมมากมายนับไม่ถ้วน ซึ่งคล้ายกับฟังก์ชันทางคณิตศาสตร์ที่ไม่มีฟังก์ชันผกผัน
คัดลอกรหัสรหัสดังต่อไปนี้:
นำเข้า java.security.MessageDigest;
คลาสสาธารณะ Test_MD5{
สาธารณะสุดท้ายคงสตริง MD5 (สตริง s) {
ถ่าน hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f' };
พยายาม {
ไบต์[]strTemp=s.getBytes();
//สร้างวัตถุ MessageDigest โดยใช้ MD5
MessageDigestmdTemp=MessageDigest.getInstance("MD5");
mdTemp.update(strTemp);
ไบต์[]md=mdTemp.digest();
intj=md.ความยาว;
charstr[]=newchar[j*2];
ความเข้ม=0;
สำหรับ(inti=0;i<j;i++){
ไบต์เทบ=md[i];
//System.out.println((int)b);
//เข้ารหัสตัวเลข (int)b ด้วยไบต์คู่
str[k++]=เลขฐานสิบหก[b>>4&0xf];
str[k++]=เลขฐานสิบหก[b&0xf];
-
returnnewString(str);
} จับ (ยกเว้น) {returnnull;}
-
//ทดสอบ
publicstaticvoidmain (สตริง [] 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) ซึ่งเป็นตัวเลขทางดาราศาสตร์อยู่แล้ว การจัดเก็บพจนานุกรมนี้ต้องใช้กลุ่มดิสก์ระดับ TB และวิธีนี้ก็มีข้อกำหนดเบื้องต้นด้วย ซึ่งจะได้รับบัญชีเป้าหมาย สิ่งนี้จะเกิดขึ้นได้ก็ต่อเมื่อรหัสผ่านมีค่า MD5