ก่อนอื่นให้เข้าใจการใช้งาน MD5 การเข้ารหัสจากรูปต่อไปนี้ดังนี้
แพ็คเกจ com.pb; นำเข้า java.io.unsupportencodingexception; นำเข้า java.security.messagedigest; นำเข้า Java.security.nosuchalgorithmexception; นำเข้า Java.util.scanner;/************************************************** สรุป* 4. แปลงไบต์ [] เป็นสตริง hexadecimal ที่มีการค้นหา 32 บิต*/คลาสสาธารณะ MD5 {/** สร้าง MD5 ด้วยการส่งผ่านในพารามิเตอร์สตริง*/โมฆะสาธารณะ Generatemd5 (อินพุตสตริง) {ลอง {// 1 เริ่มต้นวัตถุสรุปข้อมูลที่ส่งข้อความและระบุว่าเป็น MD5 โดยไม่ต้องเป็นตัวพิมพ์ใหญ่ MDEGEST MD = MessageDigest.getInstance ("MD5"); // 2. ส่งผ่านสตริงที่จะคำนวณเพื่ออัปเดตข้อมูลสรุป, ส่งผ่านคือไบต์อาร์เรย์ไบต์ [], // แปลงสตริงเป็นอาร์เรย์ไบต์โดยใช้เมธอด getBytes () // เมื่อระบุการเข้ารหัสอักขระของมันคือ UTF-8 md.update (input.getBytes ("UTF-8")); // 3. คำนวณวิธีการสรุปข้อมูล Digest () // ส่งคืนค่าคือไบต์อาร์เรย์ไบต์ [] hashCode = md.digest (); // 4. แปลงไบต์ [] แปลงเป็นสตริง hexadecimal ด้วยการค้นหา 32 บิต // ประกาศวัตถุ StringBuffer เพื่อจัดเก็บค่าสตริงสุดท้าย SB = ใหม่ StringBuffer (); // โอนอาร์เรย์ไบต์สำหรับ (ไบต์ B: hashCode) {// แปลงเนื้อหาอาร์เรย์เป็น hexadecimal, sb.append (character.formigit (b >> 4 & 0xf, 16)); // โอนไปยัง hexadecimal 32 บิต sb.append (ตัวละคร fordigit (b & 0xf, 16)); } system.out.println ("ผลลัพธ์หลังจากการเข้ารหัสคือ:"+sb.toString ()); } catch (nosuchalgorithmexception e) {// toDo บล็อก catch ที่สร้างโดยอัตโนมัติ E.PrintStackTrace (); } catch (unsupportencodingexception e) {// toDo บล็อก catch ที่สร้างโดยอัตโนมัติ E.PrintStackTrace (); }} โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// ประกาศวัตถุที่เข้ารหัสคลาส MD5 MD5 MD5 = ใหม่ MD5 (); // ใช้สแกนเนอร์เพื่อป้อนสแกนเนอร์สแกนเนอร์ = เครื่องสแกนใหม่ (System.in); System.out.println ("โปรดป้อนเนื้อหาที่จะเข้ารหัส:"); สตริงอินพุต = scanner.nextline (); // เรียกวิธีการเข้ารหัส md5.GenerateMD5 (อินพุต); - ผลลัพธ์:
โปรดป้อนเนื้อหาที่จะเข้ารหัส:
ผลลัพธ์หลังจากเรียนรู้กระบวนการเข้ารหัสของ MD5 คือ: B826CDAC46F01DCC8CCC60A76CEBF858
รหัสที่สอง:
Package Test.md5; นำเข้า Java.security.MessageDigest; คลาสสาธารณะ MD5UTIL {สตริงสุดท้ายคงที่สาธารณะ MD5 (สตริง S) {Char S) hexdigits [] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; ลอง {byte [] btinput = s.getBytes (); // รับวัตถุที่ส่งข้อความของอัลกอริทึม MD5 Digest MESAGEDIGEST MDINST = MessageDigest.getInstance ("MD5"); // อัปเดต digest mdinst.update (btinput); // รับ ciphertext byte [] md = mdinst.digest (); // แปลง ciphertext เป็นรูปแบบสตริง hex int j = md.length; char str [] = ถ่านใหม่ [J * 2]; int k = 0; สำหรับ (int i = 0; i <j; i ++) {byte byte0 = md [i]; str [k ++] = hexdigits [byte0 >>> 4 & 0xf]; str [k ++] = hexdigits [byte0 & 0xf]; } ส่งคืนสตริงใหม่ (str); } catch (exception e) {e.printstacktrace (); คืนค่า null; }} โมฆะคงที่สาธารณะหลัก (สตริง [] args) {system.out.println (md5util.md5 ("20121221")); System.out.println (md5util.md5 ("การเข้ารหัส")); -รหัสชิ้นที่สาม: การใช้งาน Java ของอัลกอริทึมการเข้ารหัส MD5
แพคเกจอื่น ๆ ; นำเข้า java.security.messageDigest; นำเข้า Java.security.nosuchalgorithmexception;/** md5 อัลกอริทึม*/คลาสสาธารณะ MD5 {// อาร์เรย์ระดับโลกที่เป็นส่วนตัว "A", "B", "C", "D", "E", "F"}; Public Md5 () {} // ส่งคืนแบบฟอร์มเป็นหมายเลขและสตริงสตริงคงที่ส่วนตัว bytetoArrayString (byte bbyte) {int iret = bbyte; // system.out.println ("iret ="+iret); if (iret <0) {iret += 256; } int ID1 = IRET / 16; INT ID2 = IRET % 16; return strdigits [id1] + strdigits [id2]; } // แบบฟอร์มการส่งคืนเป็นเพียงสตริงคงที่เป็นหลักแบบคงที่ bytetonum (byte bbyte) {int iret = bbyte; System.out.println ("iret1 =" + iret); if (iret <0) {iret += 256; } return string.valueof (iret); } // แปลงอาร์เรย์ไบต์เป็น hexadecimal สตริงสตริงคงที่ส่วนตัว bytetoString (byte [] bbyte) {stringbuffer sbuffer = new StringBuffer (); สำหรับ (int i = 0; i <bbyte.length; i ++) {sbuffer.append (bytetoarraystring (bbyte [i])); } return sbuffer.toString (); } สตริงคงที่สาธารณะ getMd5Code (String strobj) {String resultsTring = null; ลอง {resultString = สตริงใหม่ (strobj); MESAGEDIGEST MD = MESEGATEGEST.GETINSTANCE ("MD5"); // md.digest () ค่าส่งคืนของฟังก์ชั่นนี้คืออาร์เรย์ไบต์ที่เก็บ hash resultstring = bytetostring (md.digest (strobj.getBytes ())); } catch (nosuchalgorithmexception ex) {ex.printstacktrace (); } return resultstring; } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {md5 getMd5 = ใหม่ md5 (); System.out.println (getMd5.GetMd5Code ("000000")); -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น